from collections import deque
def solution(priorities, location):
answer = 0
pr = [str(i) for i in range(1,len(priorities)+1)] # ["1","2","3","4"]
p = pr[location] #"3"
priorities = deque(priorities) ; pr = deque(pr)
while True:
m = max(priorities) #3
while m in priorities: # 3 in [2,1,3,2]
order = priorities.popleft() #2 [1, 3, 2]
who = pr.popleft() #"1" ["2","3","4"]
if m != order: #3 != 2
priorities.append(order) ##[1,3,2,2]
pr.append(who) #["2","3","4","1"]
else:
answer += 1
if who == p:
return answer
return answer
풀이
엄청 헷갈리는 문제였다.
우선 순위는 높은대로 뽑되, 처음 리스트의 location번째 자리에 위치했던 값이 언제 출력되는지를 알아야하기에 초반에 변수를 설정해두는게 중요하다고 생각했다.
예제처럼 알파벳으로 설정할까 했지만, priorities가 100까지 가능해서 문자열인 숫자로 대체했다. (그래서 더 복잡함;)
p를 찾아야할 값으로 두고, m은 항상 priorities의 max값이다. 만약 m이 priorities에 더이상 없다면 다음 max를 구하는 이중 while을 작성했다.