[Python] 백준10845 큐

[Python] 백준10845 큐

백준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”이 생기는 것 같습니다. 대부분의 언어들은 비슷한 역할을 하는 문법이 있지만 파이썬만 없어 아쉬웠는데 드디어 추가되는 모양입니다.


결과

결과


© 2022. All rights reserved. 신동민의 블로그