[python] 큐와 덱(queue & deque)_백준 문제풀이

이희진·2023년 3월 15일
0

1966번 - 프린터 큐

import sys
from collections import deque 

input = sys.stdin.readline
N = int(input())
for i in range(N):
    n, m = map(int, input().split(' '))
    printer = list(map(int, input().split(' ')))
    q = deque(printer)
    count = 0
    index = deque([i for i in range(n)])
    while q:
        doc = q[0]
        if doc == max(q):
            count += 1
            if index[0] == m:
                print(count)
                break
            else:
                q.popleft()
                index.popleft()
        else:
            q.append(q.popleft())
            index.append(index.popleft())

1021번 - 회전하는 큐

import sys
from collections import deque

input = sys.stdin.readline
n, m = map(int, input().split(' '))
q = deque([i for i in range(1, n+1)])
numbers = list(map(int, input().split(' ')))
index = 0
count = 0
for target in numbers:
    if q[0] == target:
        q.popleft()
    else:
        if list(q).index(target) < len(q)/2:
            while q[0] != target:
                q.append(q.popleft())
                count += 1
            q.popleft()    
        else:
            while q[0] != target:
                q.appendleft(q.pop())
                count += 1
            q.popleft()    

print(count)

5430번 - AC

from collections import deque
import sys

input = sys.stdin.readline
N = int(input())

for n in range(N):
    commands = list(input())
    count = int(input())
    error_flag = 0
    reverse_flag = 0
    q = deque(input().rstrip()[1:-1].split(','))
    if count == 0:
        q = []
      
        

    for command in commands:
        if command == 'R':
            reverse_flag += 1
        elif command == 'D':
            if len(q) > 0:
                if reverse_flag % 2 == 1:
                    q.pop()
                else:
                    q.popleft()
            else: 
                error_flag = 1
                print('error')
                break

    else:
        if reverse_flag % 2 == 1:
            q.reverse()
        print('[' + ','.join(q) + ']')

0개의 댓글