def solution(progresses, speeds):
answer = []
count = 0
day = 0
while len(progresses) > 0:
day+=1
if 100-(progresses[0] + day*speeds[0]) <= 0:
progresses.pop(0)
speeds.pop(0)
count+=1
day-=1
else:
if count > 0:
answer.append(count)
count = 0
answer.append(count)
return answer
이 문제는 무조건 선입선출(FIFO)이 되어야하기 때문에 queue 자료구조를 염두하고 풀이하였다. queue의 경우 pop(0)
을 적재적소에 잘 사용해야 한다. 앞으로도 잘 기억해두자!
count, day 변수를 미리 설정해두었다. 문제를 읽으면 어떤 변수가 새로 필요할지 잘 생각해야한다. 나는 아직 이것이 조금 서툰 것 같다. 연습!!
if문안에 day-=1
을 한 이유는, count가 1이 올라가고 progresses에서 다음 인덱스의 요소도 같은 날에 기능 개산 작업이 끝났는지 확인해야 하는데 1을 안빼주면 다음 날짜에 확인한 것과 다름이 없어진다.
from collections import deque
def solution(progresses, speeds):
answer = []
count = 0
day = 0
progresses = deque(progresses)
speeds = deque(speeds)
while progresses:
day+=1
if (progresses[0] + speeds[0]*day) >= 100:
count+=1
progresses.popleft()
speeds.popleft()
day-=1
else:
if count > 0:
answer.append(count)
count = 0
answer.append(count)
return answer