https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3
from collections import deque
def solution(priorities, location):
answer = 0
Q = deque(priorities)
while len(Q) > 0:
q = Q.popleft()
if len(Q) > 0 and q < max(Q):
Q.append(q)
if location == 0:
location = len(Q)
else:
answer += 1
if location == 0:
return answer
else:
location -= 1
return answer
Q에 현재 프로세스의 우선순위보다 높은 것이 있다면 Q 맨 뒤에 넣고 location을 조정해주었다.
from collections import deque
def solution(priorities, location):
answer = 0
Q = deque((i, p) for i, p in enumerate(priorities))
while len(Q) > 0:
q_set = Q.popleft()
if any(q_set[1] < q[1] for q in Q):
Q.append(q_set)
else:
answer += 1
if q_set[0] == location:
return answer
return answer
location을 따로 조작하지 않고, 프로세스의 idx와 우선순위를 튜플로 묶어서 같이 이동하면서 주어진 location과 비교하였다. location 조작에서 오류에 대한 위험도 낮고, 코드도 훨씬 깔끔하다.
프로그래머스 level2 프로세스 - 다른 사람 풀이