def solution(progresses, speeds):
    m_idx, answer, days = 0, [], []

    for i in range(len(progresses)):
        days.append((100-progresses[i])//speeds[i] if (100-progresses[i])%speeds[i]==0
                    else (100-progresses[i])//speeds[i]+1)

    for i in range(len(days)):
        if days[m_idx]<days[i]:
            answer.append(i-m_idx)
            m_idx = i

    answer.append(len(days)-m_idx)

    return answer

deque 활용한 코드

from collections import deque

def solution(progresses, speeds):
    answer, days = [], deque()
    days.append((100-progresses[0])//speeds[0] if (100-progresses[0])%speeds[0]==0 
                    else (100-progresses[0])//speeds[0]+1)
    
    for i in range(1, len(progresses)):
        d = ((100-progresses[i])//speeds[i] if (100-progresses[i])%speeds[i]==0 
                    else (100-progresses[i])//speeds[i]+1)
        p = days.popleft()
        
        if d>p:
            answer.append(len(days)+1)
            days.clear()
        else: 
            days.appendleft(p)
        days.append(d)
    
    answer.append(len(days))
    
    return answer

0개의 댓글