[Programmers][Level2][Python]프린터

냥린이·2021년 12월 30일
0

알고리즘

목록 보기
11/28
post-thumbnail

문제


풀이

queue.append(queue.pop(0))로 첫번째 원소를 큐 마지막에 그대로 넣을 수 있다.

이 문제에서 내가 약간 헤맨 부분은 location 위치를 어떻게 추적할 것인가? 였다.

처음에는 인덱스와 값을 같이 저장하려고 딕셔너리를 쓸까 고민했지만 딕셔너리는 pop()과 append()가 지원이 안 된다.

중요도 리스트의 인덱스와 똑같은 리스트를 하나 더 만들어서 값을 큐 뒤로 넘길 때마다 인덱스도 같이 넘겨주면 됐다.

idx.append(idx.pop(0))

그리고 문서가 출력될 때마다 인덱스를 저장하면 출력 순서별 문서 위치가 담긴 리스트가 만들어진다.

order.append(idx.pop(0))

그러면 특정 문서 인덱스를 값으로 두고 그 값의 인덱스를 알아내야 하는데, 파이썬의 기능 중에 list.index(value) 와 같이 리스트에서 해당 값이 있는 인덱스 반환이 가능하다는 것을 알게 되었다.

문제에서 원하는 return 값은 출력 순서이므로 인덱스+1을 해주면 된다.

order.index(location)+1

최종 코드는 다음과 같다.

def solution(priorities, location):
    idx = [i for i in range(0, len(priorities))]
    order = []
    
    while len(priorities) > 0:
        if priorities[0] < max(priorities):
            priorities.append(priorities.pop(0))
            idx.append(idx.pop(0))
        else:
            priorities.pop(0)
            order.append(idx.pop(0))

    return order.index(location)+1

profile
홀로서기 기록장

0개의 댓글