sm 기술 블로그
151. 10828(스택) - 파이썬 본문
import sys
input = sys.stdin.readline
N = int(input())
stack = []
result = ""
for _ in range(N):
S = input()
tmp = S.split()
num = 0
if len(tmp) == 1:
S = tmp[0]
elif len(tmp) == 2:
S = tmp[0]
num = int(tmp[1])
if S == "push":
stack.append(num)
elif S == "size":
result += str(len(stack)) + "\n"
elif S == "empty":
if len(stack) == 0:
result += str("1") + "\n"
else:
result += str("0") + "\n"
elif S == "top":
if len(stack) == 0:
result += str("-1") + "\n"
else:
result += str(stack[len(stack)-1]) + "\n"
elif S == "pop":
if len(stack) == 0:
result += str("-1") + "\n"
else:
result += str(stack.pop()) + "\n"
print(result)
문제요약
- push X: 정수 X를 스택에 넣는 연산이다.
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 스택에 들어있는 정수의 개수를 출력한다.
- empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
설명
먼저 값이 push 1 일 수도 있으니 만약 쪼갰을 때 길이가 2라면 push 와 1을 분리해준다.
S = input()
tmp = S.split()
num = 0
if len(tmp) == 1:
S = tmp[0]
elif len(tmp) == 2:
S = tmp[0]
num = int(tmp[1])
- push X: 정수 X를 스택에 넣는 연산이다.
if S == "push":
stack.append(num)
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
elif S == "pop":
if len(stack) == 0:
result += str("-1") + "\n"
else:
result += str(stack.pop()) + "\n"
- size: 스택에 들어있는 정수의 개수를 출력한다.
elif S == "size":
result += str(len(stack)) + "\n"
- empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
elif S == "empty":
if len(stack) == 0:
result += str("1") + "\n"
else:
result += str("0") + "\n"
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
elif S == "top":
if len(stack) == 0:
result += str("-1") + "\n"
else:
result += str(stack[len(stack)-1]) + "\n"
'문제 > 백준_파이썬' 카테고리의 다른 글
152. 10773(제로) - 자바 (0) | 2022.07.20 |
---|---|
152. 10773(제로) - 파이썬 (0) | 2022.07.20 |
150. 13305(주유소) - 파이썬 (0) | 2022.07.19 |
149. 1541(잃어버린 괄호) - 파이썬 (0) | 2022.07.18 |
148. 11399(ATM) - 파이썬 (0) | 2022.07.18 |
Comments