반응형
문제설명
https://programmers.co.kr/learn/courses/30/lessons/42587
사고과정
- 큐를 활용한 풀이었다. 예전에 인프런 강의를 들으면서 풀어보았던 응급실 문제와 매우 유사했다. 오랜만에 풀었지만 그래도 푸는 데 성공! 주의할 점은 이번 문제도 문서의 중요도와 그 문서의 위치를 튜플로 큐에 담고있어야 한다!
- 그리고 큐 길이가 1이 될때까지 문제에서 주어진 규칙을 수행하면서 큐에서 popleft한 튜플의 원소가 문제에서 매개변수로 주어진 location과 동일할 때 return 해준다. 그리고 혹시라도 인쇄 작업이 1개만 주어졌을 수도 있으므로 이를 대비해 while 바깥문에도 return 구문을 넣어준다! 또 처음 cnt 값을 1로 설정해주어야 함! 왜냐하면 0번째로 인쇄된다는 말은 없으므로 가장 첫 번째는 1번째로 인쇄되는 것임!
풀이
from collections import deque
def priority(tmp, queue):
p, i = tmp
for i in range(1, len(queue)):
p_, i_ = queue[i]
if p < p_:
return False
return True
def solution(priorities, location):
queue = deque([(p, i) for i, p in enumerate(priorities)])
cnt = 1
while len(queue) != 1:
tmp = queue[0]
if not priority(tmp, queue):
queue.append(queue.popleft())
else:
prior, loc = queue.popleft()
if loc == location:
return cnt
cnt += 1
return cnt
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[프로그래머스] 조이스틱 (0) | 2021.12.24 |
---|---|
[프로그래머스] 소수 찾기 (0) | 2021.12.23 |
[프로그래머스] 전화번호 목록 (0) | 2021.12.20 |
[프로그래머스] 빛의 경로 사이클 (0) | 2021.12.19 |
[프로그래머스] 튜플 (0) | 2021.12.18 |