[프로그래머스 | Python] 프린터

게으른 완벽주의자·2023년 1월 30일
0

프로그래머스

목록 보기
24/83
post-custom-banner

프로그래머스_프린터

이 문제도 '나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다.'를 보고 deque.rotate()가 떠올랐다

각 문서들의 위치를 같이 queue 형태로 만들어서 관리하고, 중요도가 가장 높으면서도 원하는 위치의 문서가 출력될 때까지 queue를 rotate 하면서 그 때의 idx가 location과 동일한지 확인한다

그리고 최대값을 업데이트 하기 위해 queue에서 popleft로 끝나는 것이 아니라, priorities에서 최대값을 삭제하면서 남은 중요도들을 업데이트 한다

from collections import deque
def solution(priorities, location):
    answer = 0
    q = deque()
    for i in range(len(priorities)):
        q.append((priorities[i],i))
    
    while q:
        #중요도가 가장 높지 않은 경우
        if q[0][0]!=max(priorities):
            q.rotate(-1)
        else:
            #중요도가 가장 높으면서 찾는 위치의 문서인경우
            if q[0][1]==location:
                answer+=1
                break
            #중요도가 가장 높지만 찾는 위치의 문서가 아닌 경우
            answer+=1
            q.popleft()
            priorities.remove(max(priorities))  #최대값을 삭제하면서 업데이트 해줘야한다
            
    return answer
profile
데이터를 공부하고 있습니다
post-custom-banner

0개의 댓글