1. 문제 설명
2. 코드
from collections import deque
def solution(priorities, location):
queue = deque([(p, idx) for idx, p in enumerate(priorities)])
count = 0
while queue:
current = queue.popleft()
if any(x[0] > current[0] for x in queue):
queue.append(current)
else:
count += 1
if current[1] == location:
return count
3. 풀이 과정
리스트보다 popleft()를 사용하기 위해 duque 패키지를 불러온다.
queue 변수에 priorities를 enumerate()해서 (우선순위,초기위치) 튜플로 저장한다.
실행 순번 카운터하는 count를 0으로 불러온다.
queue가 0이 될 때까지, 빌 때까지 while문으로 반복한다.
popleft()로 queue의 왼쪽에서 프로세스를 추출해 current에 저장한다.
더 높은 우선순위가 존재하는지 any()로 확인한다.
더 높은 값이 존재하여 재삽입하게 되면 append()로 맨 뒤로 삽입한다.
아니면 count에 1을 추가하고 current[1]이 location과 같아지면 count를 반환한다.
4. 추천 코드
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
answer = 0
while True:
cur = queue.pop(0)
if any(cur[1] < q[1] for q in queue):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
5. 추천 코드의 풀이 과정
popleft()를 사용하지 않고 pop(0)으로 대신하여 작성한 코드이다.
while queue가 아니라 True로 무한 반복문을 작성하였다.
'프로그래머스 > 알고리즘 고득점 Kit' 카테고리의 다른 글
[프로그래머스] [스택/큐] Lv.2 /주식가격 (파이썬/Python) (0) | 2025.04.10 |
---|---|
[프로그래머스] [스택/큐] Lv.2 /다리를 지나는 트럭 (파이썬/Python) (0) | 2025.04.09 |
[프로그래머스] [스택/큐] Lv.2 /올바른 괄호 (파이썬/Python) (0) | 2025.04.05 |
[프로그래머스] [스택/큐] Lv.2 /기능개발 (파이썬/Python) (0) | 2025.03.31 |
[프로그래머스] [스택/큐] Lv.1 /같은 숫자는 싫어 (파이썬/Python) (0) | 2025.03.29 |