728x90
반응형

간단한 큐 문제이다. 큐를 안 쓴 풀이도 있다.

이 문제 같이 앞에 값부터 없애가면서 체크해야 되는 문제는 큐를 사용해보도록 하자. 

 

풀이 Q 사용 O

1. 각 progress 별 필요한 요일을 큐에 저장해준다 -> [ceil((100-progresses[i])/speeds[i]) for i in range(len(speeds))]

2. popleft 한 값이 최대값일 경우 ans에  append 1, 아닐 경우 ans 마지막 요소에 1 더함

from math import ceil
from collections import deque

def solution(progresses, speeds):
    ans = []
    q = deque([ceil((100-progresses[i])/speeds[i]) for i in range(len(speeds))])
    max_t = 0
    while q:
        t = q.popleft()
        if t > max_t:
            max_t = t
            ans.append(1)
        else:
            ans[-1] += 1

    return ans

 

풀이 Q 사용 X

from math import ceil

def solution(progresses, speeds):
    ans = []
    li = [ceil((100-progresses[i])/speeds[i]) for i in range(len(speeds))]
    for i in range(len(li)):        
        if ans == [] or max(li[:i]) < li[i]:
            ans.append(1)
        else:
            ans[-1] += 1

    return ans
728x90
반응형

+ Recent posts