백준 10845번: 큐 [Python]

kimminjunnn·2026년 1월 20일

알고리즘

목록 보기
297/311

문제 출처 : https://www.acmicpc.net/problem/10845
난이도 : 실버 4


문제 파악

어제 푼 백준 10828번: 스택 [Python] 문제와 스택이냐 큐이냐 자료구조 차이만 존재한다.

문제의 요구사항에 맞춰
push, pop, size, empty, front, back 여섯가지의 간단한 기능들을 구현하면 된다.

파이썬에는 deque이라는 큐를 구현해주는 라이브러리가 있어서 큐를 유용하게 구현할 수 있다.

해답 및 풀이

import sys
input = sys.stdin.readline
from collections import deque

N = int(input())

queue = deque()
out = []

for _ in range(N):
    cmd = input().split()

    if cmd[0] == "push":
        queue.append(int(cmd[1]))
    elif cmd[0] == "pop":
        if queue:
            out.append(str(queue.popleft()))
        else:
            out.append("-1")
    
    elif cmd[0] == "size":
        out.append(str(len(queue)))
    
    elif cmd[0] == "empty":
        out.append("1" if not queue else "0")

    elif cmd[0] == "front":
        if queue:
            out.append(str(queue[0]))
        else:
            out.append("-1")

    elif cmd[0] == "back":
        if queue:
            out.append(str(queue[-1]))
        else:
            out.append("-1")
    
print("\n".join(out))

이 문제에선 deque.popleft만 사용되었지만 오랜만에 deque을 만나 다시 deque의 메소드들을 정리해둔다.

메소드역할(한줄)예시
append(x)오른쪽(뒤)에 추가dq.append(3)
appendleft(x)왼쪽(앞)에 추가dq.appendleft(3)
pop()오른쪽(뒤)에서 제거 후 반환x = dq.pop()
popleft()왼쪽(앞)에서 제거 후 반환x = dq.popleft()
extend(iter)오른쪽에 여러 개 추가dq.extend([1,2,3])
extendleft(iter)왼쪽에 여러 개 추가(순서 주의)dq.extendleft([1,2,3])3,2,1,...
rotate(k)회전(+)오른쪽 / (-)왼쪽dq.rotate(1)
clear()전부 비우기dq.clear()
len(dq)길이(함수)len(dq)
dq[i]인덱싱(가능)dq[0]
remove(x)x 첫 번째 1개 삭제dq.remove(5)
count(x)x 개수 세기dq.count(5)
profile
Frontend Engineers

0개의 댓글