프로그래머스 코딩테스트 고득점 Kit_스택/큐_프린터

문제 보러 가기 👈 클릭!

💡 풀이

✔ 풀이 방법

큐 자료구조에 (인덱스, 문서의중요도)를 입력받은 문서의 중요도 배열 순서대로 넣는다.

가장 큰 중요도를 구한다.
맨 앞 문서의 중요도가 가장 큰 중요도보다 작을경우, pop하고 맨 뒤에 push 한다.
가장 큰 중요도보다 같을경우 pop하고, 내가 인쇄를 요청한 문서인지 인덱스를 통해 확인한다.

내가 인쇄를 요청한 문서가 맞다면 인쇄 순서를 return하고 종료한다.

구현 코드👇

#큐 자료구조 사용 (FIFO)
#문서의 중요도 배열 priorities / 내 문서 위치 location
#내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 return

from collections import deque
def solution(priorities, location):
    
    cnt = 0
    q = deque(list(enumerate(priorities)))
    while q:
        max_p = max([tp[1] for tp in q])
        if q[0][1] < max_p:
            q.append(q.popleft())
        else:
            document = q.popleft()
            cnt += 1
            if document[0] == location:
                return cnt

📝 any() 를 사용하여 맨 앞에 있는 문서보다 중요도가 높은 문서가 있는지 확인하는 방법도 있음

좋은 웹페이지 즐겨찾기