

from collections import deque
def solution(priorities, location):
answer = 0
q = deque(priorities)
num = deque()
for i in range(len(q)):
num.append(i)
pr = 0
while q:
i = 1
size = len(q)
while i < size and q[i] <= q[0]:
i+=1
if i != size: # 첫번째 원소보다 우선순위가 높은 녀석이 있었을 경우
for _ in range(i):
q.append(q.popleft())
num.append(num.popleft())
else:
pr +=1
if location == num[0]:
return pr
q.popleft()
num.popleft()
첫번째 원소보다 우선순위가 높은게 있을 때와 없을 때로 나눠서
첫번째 원소보다 우선순위 높은게 뒷쪽에 있을 때는
그 우선순위가 더 높은녀석이 제일 첫번째로 오도록 반복문 돌려서 앞에서 빼고 뒤로 넣어줬고
첫번째 원소의 우선순위가 가장 높을 때는
그 첫번째 원소가 찾던 녀석이 맞는지를 확인하고 몇번째로 출력된건지 pr이라는 변수에 누적 저장해서 반환해줬다.
찾던 녀석이 맞는지 확인하기 위해서는 자신의 초기 위치를 기억할 num 배열이 필요하다고 생각했고 얘도 이름표처럼 똑같이 따라다니도록 하려면 덱으로 구성해서 똑같이 동작하도록 만들어줘야했다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [알고리즘 고득점 kit/스택, 큐] 주식가격 (0) | 2026.04.29 |
|---|---|
| [알고리즘 고득점 kit/스택, 큐] 다리를 지나는 트럭 (0) | 2026.04.29 |
| [알고리즘 고득점 kit/스택, 큐] 올바른 괄호 (0) | 2026.04.29 |
| [알고리즘 고득점 kit/스택, 큐] 기능개발 (0) | 2026.04.29 |
| [알고리즘 고득점 kit/해시] 베스트앨범 (0) | 2026.04.28 |