문제를 이해하는 것은 어렵지 않았지만, 구현하는 부분에서 조금 시간이 걸렸다
enumerate를 통해 (우선순위, 위치) 정보를 가진 배열을 생성하고, 배열에서 맨 앞 데이터를 뺐다가 다시 맨 뒤에 넣는 과정을 위해 deque를 사용했다
처음에는 런타임 에러가 났었는데, 큐가 비어있지 않을 경우의 조건을 추가하여 해결했다
두 번째 시도에는 시간 초과가 났는데, 이는 조건문의 순서를 바꿔서 해결했다(?)
소스 코드
from collections import deque
def solution(priorities, location):
data = [(pri, idx) for idx, pri in enumerate(priorities)]
data = deque(data)
cnt = 0
while len(data):
pri, idx = data.popleft()
if data and max(data)[0] > pri:
data.append((pri, idx))
else:
cnt += 1
if idx == location:
return cnt
any() : 반복 가능한 자료형 내 element 중 하나라도 True인지 확인하는 함수
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