programmers.co.kr/learn/courses/30/lessons/42586
[풀이]
Queue를 사용했다.
while문을 돌때마다 progresses를 넣은 q를 update해줬다.
그런 후, q를 맨 앞부터 체크하여 100이 넘은 기능이 있다면 result_day를 1올리고 그 다음 확인,
100이 넘은 기능이 없다면 그 뒤는 보지 않고 바로 break
그 후, result_day의 갯수만큼 q와 s에서 popleft를 하고 그 갯수를 result 리스트에 append
마지막엔 result리스트만 return!
from collections import deque
def solution(progresses, speeds):
q=deque(progresses)
s=deque(speeds)
result=[]
while q:
result_day = 0
for i in range(len(s)):
q[i]+=s[i] # while문 한번씩 돌때마다 progresses update
# 완료된 progress가 있나 확인
for p in range(len(q)):
if q[p]>99:
result_day+=1
else:
break
if result_day>0:
for _ in range(result_day):
q.popleft()
s.popleft()
result.append(result_day)
return result
'코딩 테스트 > 문제 풀기' 카테고리의 다른 글
[프로그래머스] 주식가격 (0) | 2021.03.25 |
---|---|
[프로그래머스] 124 나라의 숫자 (0) | 2021.03.25 |
[프로그래머스] 스킬트리 (0) | 2021.03.24 |
[프로그래머스] 다리를 지나는 트럭 (0) | 2021.03.24 |
[프로그래머스] 프린터 (0) | 2021.03.24 |
댓글