[Python] 백준10845 큐
문제
예제 입력
코드
import sys
from collections import deque
q=deque()
n = int(sys.stdin.readline())
while n > 0:
arr = sys.stdin.readline().split()
match arr[0]:
case "push":
q.append(arr[1])
case "pop":
if len(q) == 0: # len(q) -> q 기본적으로 empty를 하여 비어있는지 확인
print(-1)
else:
print(q.popleft())
case "size":
print(len(q))
case "empty":
if len(q) == 0:
print(1)
else:
print(0)
case "front":
if len(q) == 0:
print(-1)
else:
print(q[0])
case "back":
if len(q) == 0:
print(-1)
else:
print(q[-1])
n -= 1
설명
파이썬을 통해서 사용자로부터 입력받아 자료형 덱을 사용하여 자료형 큐을 구현했습니다. 파이썬 내장모듈에서는 따로 큐 라이브러리가 존재하지만 기능이 적고 인덱스 접근이 어렵습니다. 보통 덱 라이브러리가 성능이 더 좋아서 import 해서 큐 대신 사용합니다.
dp=deque() # 덱 생성
dp.append() # 덱의 가장 오른쪽에 원소 삽입
dp.popleft() # 가장 왼쪽 원소 반환
dp.appendleft() # 덱의 가장 왼쪽에 원소 삽입
dp.pop() # 가장 오른쪽 원소 반환
dp.clear() # 모든 원소 제거
dp.copy() # 덱 복사
dp.count(x) #x와 같은 원소의 개수를 계산
정리
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _: # default
return "Something's wrong with the Internet"
처음에는 조건문으로 풀었지만 파이썬(python) 3.10에 C언어의 “switch/case”문과 비슷한 “match/pattern”이 생기는 것 같습니다. 대부분의 언어들은 비슷한 역할을 하는 문법이 있지만 파이썬만 없어 아쉬웠는데 드디어 추가되는 모양입니다.