[프로그래머스 python]기능개발
2020-04-03https://programmers.co.kr/learn/courses/30/lessons/42586
스택/큐의 레벨2문제
progresses | speeds | return |
---|---|---|
[93,30,55] | [1,30,5] | [2,1] |
progresses 배열에 speeds를 한번씩 더하면서 100이 넘어가는지 체크해서 앞에서부터 빼면 되겠다
단 앞에 뒤에 기능이 먼저 100%가 되어도 앞에 기능이 완성되어야 배포 할 수 있기때문에
맨 앞이 100인지 체크해서 뽑아내는 방식으로 해결했다.
문제에 주어진 list를 가지고 하나씩 뺴다보니 마지막에 index error가 나기에 progresses와 speeds의 끝에 값을 하나씩 추가해주었다.(-1, 0) 그리고 -1이 남았다면 마지막까지 실행한것으로 판단하고 루프를 빠져나온다
def solution(progresses, speeds):
day = 0
ans = []
progresses.append(-1)
speeds.append(0)
while True:
day += 1
for i in range(len(progresses)):
progresses[i] += speeds[i]
cnt = 0
while progresses[0] >= 100:
cnt += 1
progresses.pop(0)
speeds.pop(0)
if cnt != 0:
ans.append(cnt)
if progresses[0] == -1:
break
# print(day, cnt, progresses, ans)
return ans
# p, s = [93, 30, 55], [1, 30, 5] # [2, 1]
# p,s= [10, 10, 10, 10], [10, 1, 10, 1] # [1, 3]
# print(solution(p, s))