[프로그래머스 Lv.2] 기능개발 (Python)

지윤·2023년 6월 2일

👩🏻‍💻

처음엔 인덱스별로 진행 속도를 하나하나 더해주려고 했다. 하지만 이 경우 반복문이 꼬이고 무한루프에 빠졌다.(최악의 시간복잡도 😅) 그래서 더해주는 것이 아니라 빼주는 것으로 관점을 바꾸었고, math.ceil을 통해 걸리는 날짜를 계산해 주었다. 그리고 이전 기능보다 빨리 끝나면 count에 1을 더하여 함께 빠지도록 했다.

가독성이 떨어지는 코드같아서 좋은 코드가 생각날 때 리팩토링 하고싶다.

코드

from collections import deque
import math

def solution(progresses, speeds):
    dq = deque()
    answer = []
    count = 1
    
    for i in range(len(speeds)):
        dq.append(math.ceil((100-progresses[i])/float(speeds[i])))
        
    dq.reverse(); start = dq.pop()
    
    while dq:
        next = dq.pop()
        if start >= next:
            count += 1
        else:
            answer.append(count)
            start = next
            count = 1
            
    answer.append(count)
    return answer
profile
떠돌이 컴공

0개의 댓글