본문 바로가기

Algorithm

1966 프린터 큐 / 큐

 

 

배운 내용

효율적으로 값 넣는 방법 -> 1 2 3 4 6 8 입력시

data = list(map(int, input().split()))

출처: https://thisismi.tistory.com/entry/백준-1966번-프린터-큐-파이썬-정답-코드 [This is Mi:티스토리]

덱 안에 해당 숫자가 있는지 확인하는 방법 -> 값 in 덱

덱에서 가장 앞에 있는 수 조회 -> 덱[0] / 가장 뒤에 있는 수 조회 -> 덱[-1]

 

접근 방식

  • 순서를 기록해야 하기 때문에, 순서 기록용 덱을 하나 더 생성해서 중요도를 담은 덱과 함께 추가와 제외를 함

 

 

정답

import collections

n_count = int(input())
ans = []

for _ in range(n_count):
    deque = collections.deque()
    seq = collections.deque()

    n, m = map(int, input().split())

    numbers = map(int, input().split())
    index = 0
    for i in numbers:
        deque.append(i)
        seq.append(index)
        index += 1

    count = 0
    max_value = max(deque)

    while m in seq:
        if deque[0] != max_value:
            deque.rotate(-1)
            seq.rotate(-1)
        else:
            deque.popleft()
            seq.popleft()
            count += 1
            if len(deque):
                max_value = max(deque)

    ans.append(count)

for i in ans:
    print(i)

'Algorithm' 카테고리의 다른 글

5430 AC / 큐  (0) 2025.01.18
10866 덱 / 큐  (0) 2025.01.17
이상한 문자 만들기 / 프로그래머스  (0) 2025.01.15
11866 요세푸스 문제 0 / 큐, 덱  (0) 2025.01.15
2609 최대공약수와 최소공배수 / 정수론 및 조합론  (0) 2025.01.14