나의 풀이
- 원하는 location이 나올 때까지, 프린터 대기 목록을 수정하고, 위치 정보를 유지하는 것이 핵심이다.
- 이를 위해서 [ic]priorities[/ic]와 [ic]location[/ic] 정보를 각각 queue에 담아 처리했다.
from collections import deque
def solution(priorities, location):
# 위치 / 우선 순위 저장
queue = deque(range(len(priorities)))
priorities = deque(priorities)
answer = 0
while True:
# 우선 순위 최고 값인 경우
max_temp = max(priorities)
if max_temp == priorities[0]:
priorities.popleft()
loc_temp = queue.popleft()
answer += 1
# 정답
if loc_temp == location:
break
# 만족 X면 회전
else:
priorities.rotate(-1)
queue.rotate(-1)
return answer
다른 사람 풀이
- [ic]priorities[/ic] 원소를 제거하지 않고 0으로 바꿔 location 따로 저장하지 않고도 해결했다.
def solution(priorities, location):
answer = 0
while True:
max_num = max(priorities) # 리스트에서 가장 큰수를 구한다.
for i in range(len(priorities)): # 리스트를 처음부터 확인한다
if max_num == priorities[i]: # 만약 가장 큰 수와 리스트의 요소와 일치하면
answer += 1 # 프린트한 것으로 간주하고 answer에 1 추가
priorities[i] = 0 # 프린트한 요소는 0으로 표시
max_num = max(priorities) # 가장 큰 수를 다시 구한다.
if i == location: # 만약 location과 i가 일치하면 answer을 반환한다.
return answer