입력
출력
인쇄 대기 목록의 가장 앞의 문서를 꺼내서
중요도가 가장 높은 함수면? -> 인쇄
그렇지 않으면? -> 대기목록에 가장 마지막으로
당연히 큐로 풀어야겠다!
def solution(priorities, location):
result = []
tuple_priorities = [(i, p) for i, p in enumerate(priorities)]
# 좀 더 효율적인 방법이 없을까,,? 더 간단히 표현할 수 있는 부분 같은데
while priorities:
max_num = max(priorities)
# 리스트의 최대값과 같으면 결과 리스트에 추가
if priorities[0] == max_num:
result.append(tuple_priorities[0])
tuple_priorities.pop(0)
priorities.pop(0)
# 아니면 대기목록 가장 마지막으로 추가
else:
tmp = priorities.pop(0)
priorities.append(tmp)
tmp = tuple_priorities.pop(0)
tuple_priorities.append(tmp)
for i in range(len(result)):
if result[i][0] == location:
return i+1
-> 구글링하다보니 새로운 방법을 발견함
def solution(priorities, location):
tuple_priorities = [(i, p) for i, p in enumerate(priorities)]
answer = 0
while 1:
# 최대값과 현재값의 비교를 any를 사용해서 효율적으로 구현
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
-> 최대값을 매번 찾는 방법이 아니라 any를 이용해 현재값과 비교해서 결과 리턴