프로그래머스 스택/큐 Level 2. 프린터 문제 파이썬 풀이

프로그래머스 스택/큐 Level 2. 프린터 문제 파이썬 풀이

문제링크 https://programmers.co.kr/learn/courses/30/lessons/42587#

list의 pop을 써도 똑같으니 deque말고 list를 사용할걸 그랬다.

from collections import deque

def solution(priorities, location):
    array = []
    
    # 인덱스, 중요도 순서로 2차원 리스트 생성
    for i in range(len(priorities)):
        array.append([i, priorities[i]])
    
    # deque 형식으로 변환
    array = deque(array)
    priorities = deque(priorities)
    
    # 출력 순서
    time = 1
    
    while 1:   
        # 가장 큰 중요도 값 저장
        max_pr = max(priorities)
        
        # 요청한 문서의 index와 중요도가 같다면 리턴
        if array[0][1] == max_pr and array[0][0] == location:
            return time
        # 중요도가 가장 크나 index가 다르다면 출력
        elif array[0][1] == max_pr and array[0][0] != location:
            array.popleft()
            priorities.popleft()
            time += 1
        # 중요도가 더 큰 문서가 있다면 오른쪽에 추가
        else:
            a = array.popleft()
            b = priorities.popleft()
            array.append(a)
            priorities.append(b)   

    return time

좋은 웹페이지 즐겨찾기