320x100
https://school.programmers.co.kr/learn/courses/30/lessons/42586
리스트를 스택처럼 생각하여, 맨 앞의 progress가 stack의 top이라고 치면 위의 progress부터 빠져나갈 수 있도록 구현해야 한다.
나는 간단하게 각 day마다 맨 앞에서부터 progress가 100 이상인 경우를 count하도록 구현했다.
def solution(progresses, speeds):
answer = []
length = len(progresses)
while sum(answer) < length:
complete = 0
# 각 progress에 speed를 더함
for i in range(len(progresses)):
progresses[i] += speeds[i]
# 앞에서부터 progress가 100 이상인지 check.
# 앞의 모든 progress가 100 이상이어야 그 뒤의 progress도 배포될 수 있다.
for idx, progress in enumerate(progresses):
if complete == idx and progress >= 100:
complete += 1
# 배포된 progress와 대응되는 speed를 함께 제외시킴
progresses = progresses[complete:]
speeds = speeds[complete:]
# 배포된 경우, answer에 추가
if complete != 0:
answer.append(complete)
return answer
'코딩테스트' 카테고리의 다른 글
[파이썬] 경주로 건설 - 2020 카카오 인턴십 [CODING TEST #48] (0) | 2022.08.09 |
---|---|
[파이썬] 수박수박수박수박수박수? [CODING TEST #46] (0) | 2022.08.08 |
[파이썬] 문자열 내 p와 y의 개수 [CODING TEST #44] (0) | 2022.08.07 |
[파이썬] 파일명 정렬 - 2018 KAKAO BLIND RECRUITMENT [CODING TEST #43] (0) | 2022.08.06 |
[파이썬] 괄호 회전하기 - 월간 코드 챌린지 시즌2 [CODING TEST #42] (0) | 2022.08.06 |
댓글