Agorithm/프로그래머스
프로그래머스 Level 2 기능개발
kimjinho1
2022. 6. 27. 23:18
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
반응형