[프로그래머스] 프린터


해당 문제는 우선순위가 높은 순서대로 순차 프린트 하는 문제이다. 대기열의 첫 번째 우선순위보다 더 큰 우선순위를 갖는 값이 뒤에 존재한다면 이를 대기열의 가장 후순위에 다시 삽입한다는 조건이 있다.

이 조건을 통해 큐로 풀어야한다는 힌트를 얻을 수 있다.

다만 더 큰 우선순위를 탐색하는 방법에서 시간복잡도를 고려해보게 되는데, 다행히 인풋이 100밖에 안되서 그냥 주어진 조건대로 완전 탐색해보며 구현하면 되는 문제이다.

코드는 다음과 같다.

구현


from collections import deque

def is_biggest(cur, q):
    for i in range(len(q)):
        if cur < q[i][0]:
            return False
    return True

def solution(priorities, location):
    answer = 1
    que = deque()
    for i in range(len(priorities)):
        que.append([priorities[i], i])
    while True:
        node, idx = que.popleft()
        if is_biggest(node, que):
            if idx == location:
                break
            answer += 1
            continue
        que.append([node, idx])
    return answer

#print(solution([2, 1, 3, 2], 2))
#print(solution([1, 1, 9, 1, 1, 1], 0))