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