나의 풀이
def solution(priorities, location):
from collections import deque
q = deque(priorities)
count = 1
while q:
m = max(q)
temp = q.popleft()
location -= 1
if location < 0:
if temp < m:
location = len(q)
q.append(temp)
else:
return count
else:
if temp < m:
q.append(temp)
else:
count += 1
다른 사람들의 풀이 구경하기
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
CODE REVIEW
-
첫 번째 풀이에서는
deque
을 이용해서 풀어내었다. 원소를 맨 앞에서부터 하나씩 꺼내면서 최대인지 아닌지 따져주면 쉽게 결과를 얻을 수 있다. -
다른 사람들의 풀이 구경하기 같은 경우, 논리는 비슷하지만 특이하게
any()
를 이용해서 풀어내었다. 확실히 식이 깔끔해지긴 한듯! * 다만, 이 경우 priorities의 길이가 아주 길어질수록 소요시간이 급격하게 증가하기 때문에 그렇게 추천하진 않는다…