반응형
주석을 통해 설명 작성. 데크를 이용하여 큐를 만들어서 품. 현재 문서보다 우선순위 높은 것을 찾을 때 any라는 함수를 이용해서 간결히 푸는 경우도 있었다.
from collections import deque
def solution(priorities, location):
# 우선 순위 값과 인덱스를 데크에 저장.
q = deque([ (p,i) for i, p in enumerate(priorities)])
# 문서의 인덱스를 저장해서 출력 순서를 기록.
result = []
while len(q) > 0:
# f: priority
# idx: 문서의 인덱스(priorities list 내에서)
f, idx = q.popleft()
# 중요도 높은 문서가 있는지 탐색. => any로 하는 풀이도 있었음.
p_sub = [ p - f for p, _ in q ]
is_first = True
# 숫자 비교
for n in p_sub:
if n > 0: # 우선 순위가 현재 문서보다 높은 경우
# 데크에 마지막에 추가(대기 순위 강등)
q.append((f,idx))
is_first = False
break
# 대기 첫 번째 문서가 가장 중요한 경우 출력 결과에 기록.
if is_first:
result.append(idx)
# result에서 원하는 문서가 몇 번째로 기록되어 있는지 확인
return result.index(location)+ 1
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 더 맵게 (0) | 2022.03.02 |
---|---|
[프로그래머스] 주식가격 (0) | 2022.03.02 |
[프로그래머스] 기능개발 (0) | 2022.02.28 |
[프로그래머스] 다리를 지나는 트럭 (0) | 2022.02.28 |