from collections import deque
def solution(priorities, location):
priority_deque = deque(priorities)
copy_arr = [0] * len(priorities)
copy_arr[location] = 1
copy_deque = deque(copy_arr)
count = 0
while 1 in copy_deque:
if priority_deque[0] >= max(priority_deque):
priority_deque.popleft()
count += 1
pop_result = copy_deque.popleft()
if pop_result == 1:
return count
else:
priority_deque.append(priority_deque.popleft())
copy_deque.append(copy_deque.popleft())
return count
직접 시뮬레이션한 방식이다. 다만 deque으로 element가 빠지고 추가되므로 location으로 주어진 것도 위치가 바뀐다. 따라서 똑같이 동작하되, 처음 주어진 location 정보를 가지고 있는 deque을 만들었다.
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
deque 대신 queue를 쓴 부분은 조금 아쉽지만, any를 잘 썼고, queue에 애초에 index와 값을 저장한 좋은 풀이다.