[Python] 백준10828 스택

[Python] 백준10828 스택

사진

알고리즘에 대해 알아보자.

백준10828 스택 링크

문제

문제

예제 입력

예제


코드

import sys
from collections import deque

st=deque()
n = int(sys.stdin.readline())

while n > 0:
    arr = sys.stdin.readline().split()
    match arr[0]: 
        case "push": 
            st.append(arr[1])
        case "pop": 
            if len(st) == 0:
                print(-1)
            else:
                print(st.pop())
        case "size": 
            print(len(st))
        case "empty": 
            if len(st) == 0:
                print(1)
            else:
                print(0)
        case "top": 
            if len(st) == 0:
                print(-1)
            else:
                top = st.pop()
                st.append(top)
                print(top)         
    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. 신동민의 블로그