[백준/Python] 18258 큐 2

재활용병·2024년 1월 19일
0

코딩 테스트

목록 보기
94/157

[백준/Python] 18258 큐 2


풀이 코드 및 설명

from collections import deque 
import sys

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

for _ in range(N):
    command = input().split()
    if command[0] == 'push':
        queue.append(command[1])
    elif command[0] == 'pop':
        if queue:
            print(queue.popleft())
        else:
            print(-1)
    elif command[0] == 'size':
        print(len(queue))
    elif command[0] == 'empty':
        print(0 if queue else 1)
    elif command[0] == 'front':
        if queue:
            print(queue[0])
        else:
            print(-1)
    elif command[0] == 'back':
        if queue:
            print(queue[-1])
        else:
            print(-1)

'collections' 모듈, 'deque'

"double-ended queue"의 약자로, 양쪽 끝에서 데이터를 추가하거나 제거할 수 있는 일종의 큐를 구현한 객체이다. 'deque'는 일반적인 리스트보다 양쪽 끝에서 요소 추가 및 제거가 효율적이다.

deque 주요 특징 및 사용법

  1. Double-Ended: deque는 양쪽 끝에서 데이터를 추가하거나 제거할 수 있다. 이것은 일반적인 큐 구조와 스택 구조를 모두 지원한다는 것을 의미한다.

  2. 메서드:

  • append(x): deque의 오른쪽 끝에 새로운 요소 x를 추가합니다.
  • appendleft(x): deque의 왼쪽 끝에 새로운 요소 x를 추가합니다.
  • pop(): deque의 오른쪽 끝에서 요소를 제거하고 그 값을 반환합니다.
  • popleft(): deque의 왼쪽 끝에서 요소를 제거하고 그 값을 반환합니다.
  1. 효율성: deque는 양쪽 끝에서의 요소 추가 및 제거가 일반 리스트보다 더 효율적입니다. 리스트는 오른쪽 끝에서는 효율적이지만, 왼쪽 끝에서는 그렇지 않습니다.

  2. 큐 구현: deque를 사용하여 FIFO(First-In-First-Out) 큐를 구현할 수 있습니다. 이때, append()로 새 요소를 추가하고 popleft()로 가장 먼저 들어온 요소를 제거합니다.

if queue 구문에서 queue를 사용하는 이유

  • 파이썬에서 deque 객체는 불리언 컨텍스트에서 사용될 때 비어 있지 않으면 True, 비어 있으면 False로 평가된다.
  • 예를 들어, if queue:는 queue가 비어 있지 않을 때 True가 되어 조건문 내부가 실행됩니다.
  • 반대로 if not queue:는 queue가 비어 있을 때 True가 되어 해당 조건문이 실행됩니다.
  • 이러한 방식으로 큐가 비어 있는지 여부를 간단하게 확인할 수 있습니다.
profile
코딩 말고 개발

0개의 댓글

관련 채용 정보