728x90
사담 없이 바로 문제 풀이하도록 하겠습니다!
일단 문제는 아래 링크 확인하시면 됩니다
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해당 링크를 들어가서 문제를 이해했다는 전제 하에 코드 및 문제 풀이를 진행하도록 하겠습니다!
* 채점 결과는 아래와 같습니다

* 작성한 코드는 아래와 같습니다!
import math
def solution(progresses, speeds):
answer = []
day = []
length=len(speeds)
###1
for i in range(length):
day.append(math.ceil((100 - progresses[i])/speeds[i]))
#print(day)
day.append(100)
count=0
M = day[0]
###2
for i in range(length):
count=count+1
if M < day[i+1]:
answer.append(count)
M = day[i+1]
count=0
return answer
이제 코드를 왜 이렇게 짰는지 말씀드리자면
1) 각 작업에 대한 작업 시간(일 단위)를 확인하기
- 작업 시간= {100 - (작업 진도)}/(작업 속도) 이므로 이를 사용했습니다.
- 예를 들어 1.8일이 걸린다고 해도 결국 2일이 걸린 셈이므로, 올림을 해주는 Math.ceil()을 사용했습니다.
- 작업 시간을 저장하는 리스트인 day에다가 순서대로 넣어줍니다.
2) 각 배포마다 몇 개의 기능이 배포되는지 확인하기
- 만약 day[i]를 기준으로 해당 값과 day[i+1], day[i+2], .... , day[i+(n-i)]순으로 차례대로 비교해봤을 때, 비교값이 기준값보다 작은 경우, day[i]와 같은 날에 배포가 됩니다. (기준값보다 큰 값이 나오는 경우 day[i]에 대한 비교를 종료합니다.)
- count 변수를 이용해서 이를 셉니다.
'코딩' 카테고리의 다른 글
| 프로그래머스 - 코딩테스트 고득점 Kit - 스택/큐 - 프린터 (python) (0) | 2023.01.04 |
|---|---|
| 프로그래머스 - 코딩테스트 고득점 Kit - 스택/큐 - 올바른 괄호(python) (0) | 2023.01.04 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 스택/큐 - 같은 숫자는 싫어(python) (0) | 2023.01.04 |
| 백준 10814번: 나이순 정렬 (java) (0) | 2022.11.17 |
| 백준 2810번: 컵홀더 (java) (0) | 2022.11.17 |