프로그래머스 Lv.2 기능개발
2024. 7. 8. 15:37ㆍ알고리즘문제 풀이/프로그래머스
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42586
풀이
각각의 프로세스의 배포까지 작업하는 날짜의 수(left_day)에 대한 리스트(left_days)를 구한다.
n = len(speeds)
left_days=[]
for i in range(n):
left = 100-progresses[i]
if left % speeds[i] == 0:
left_day = left // speeds[i]
else:
left_day = left // speeds[i] + 1
left_day = int(left_day)
left_days.append(left_day)
각 배포마다 몇 개의 기능이 배포되는지 구한다.
(각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있다.
이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다.)
cnt = 0
target_day = 0
for left_day in left_days:
if left_day > target_day:
target_day = left_day
answer.append(cnt)
cnt = 1
else:
cnt += 1
answer = []
answer.append(cnt)
answer = answer[1:]
answer = answer[1:] 의 이유
cnt = 0, target_day=0이므로
반복문을 시작할 때
맨 처음 if의 구절에 항상 true가 나오고 이후
answer.append(0)을 하게 되어
answer[0] = 0이 되기 때문이다.
따라서 이 부분을 제거해야 되기 때문이다.
전체 코드
def solution(progresses, speeds):
n = len(speeds)
left_days=[]
for i in range(n):
left = 100-progresses[i]
if left % speeds[i] == 0:
left_day = left // speeds[i]
else:
left_day = left // speeds[i] + 1
left_day = int(left_day)
left_days.append(left_day)
cnt = 0
target_day = 0
for left_day in left_days:
if left_day > target_day:
target_day = left_day
answer.append(cnt)
cnt = 1
else:
cnt += 1
answer = []
answer.append(cnt)
answer = answer[1:]
return answer'알고리즘문제 풀이 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 Lv.2 의상 (0) | 2024.07.10 |
|---|---|
| 프로그래머스 Lv.2 게임 맵 최단거리 (0) | 2024.07.09 |
| 프로그래머스 Lv2. 타겟 넘버 (0) | 2024.07.09 |
| 프로그래머스 Lv.2 다리를 지나는 트럭 (0) | 2024.07.09 |
| 포르그래머스 Lv2 프로세스 (0) | 2024.07.08 |