- 스택의 맨 위 요소가 끝나려면 몇일 걸리는지 저장(days)

- 맨 위 요소가 끝나려면 걸리는 일동안 스택 요소들 모두 진행이 되므로 전체 스택에 대하여 (진행율 * 일)을 더해줌.

- 스택의 맨 위 요소부터 진행율이 100이 넘는다면 스택과 진행율 모두 pop 해줌. (진행율도 반드시 pop 해주어야 함.)

- 하나가 아닐수도 있으므로 여러개라면 모두 pop해주면서 count 해줌.

- count 해준 값을 answer에 저장하면 종료.

def solution(progresses, speeds):
    answer = []
    progresses = progresses[::-1]
    speeds = speeds[::-1]

    while True:
        remainder = (100 - progresses[-1]) % speeds[-1]
        days = (100 - progresses[-1]) // speeds[-1] 
        if remainder != 0:
            days = days + 1

        for i in range(len(progresses)):
            progresses[i] = progresses[i] + speeds[i] * days

        count = 0
        while progresses and progresses[-1] >= 100:
            count += 1
            progresses.pop()
            speeds.pop()

        answer.append(count)
        if not progresses:
            break
    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글

[ Lv 2 ] 소수 찾기  (0) 2021.06.22
[ Lv 2 ] 더 맵게  (0) 2021.06.21
[ Lv 2 ] 타겟 넘버  (0) 2021.06.21
[ Lv 2 ] 오픈채팅방  (0) 2021.06.21
[Lv 2] 멀쩡한 사각형  (0) 2021.06.20

+ Recent posts