알고리즘

프로그래머스 - 프린터(스택,큐)

ghtis1798 2021. 6. 24. 19:53

 

🔸 문제접근방식

  1. priorities를 위치를 저장하는 값과 함께 큐에 넣는다.
  2. 더 큰 값이 있다면 0번째 값을 맨 뒤로 보낸다.
  3. 더 큰 값이 없다면 해당 값을 출력하고 answer를 1증가시킨다.
  4. 해당 위치의 값이 location이라면 answer를 반환한다.

💧 Source Code

from collections import deque

def solution(priorities, location):
    '''https://programmers.co.kr/learn/courses/30/lessons/42587

    Notes:
        1. priorities의 0번째보다 더 큰 값이 있는지 확인한다.
        2. 더 큰 값이 있다면 0번째값을 맨 뒤로 보낸다.
        3. 더 큰 값이 없다면 해당 값을 출력한다.

    Args:
        priorities (list): 우선순위(int)를 담은 리스트
        location (int): 출력 순번을 알고 싶은 인쇄물의 index 위치

    Returns:
        answer (int): 인쇄물의 출력 순번
    '''

    answer = 0
    priorities = [(p,i) for i,p in enumerate(priorities)]
    priorities = deque(priorities)

    while priorities:
        target = priorities.popleft()

        if priorities and target[0] < max(priorities)[0]:
            priorities.append(target)
        else:
            answer += 1
            if target[1] == location:
                return answer

    return answer

priorities = [1,1,9,1,1,1]
location = 0
print(solution(priorities, location))