파이썬은 따로 stack 구조를 제공하지 않기 때문에, 기본 클래스 list를 사용하여 stack을 표현할 수 있다.
.append()
.pop()
stack[-1]
: 마지막 원소를 제거하지 않고 가져오기만 할 때입출력을 빠르게 받으려면 input()을 이용하면 속도가 오래 걸린다.
파이썬의 표준 라이브러리인 sys (import sys
를 위에 써줘야 함)를 임포트 하여 sys.stdin.readline()
을 사용하면 더 빠르게 처리할 수 있다.
또한 메모리도 덜 쓸 수 있다.
그러니까 앞으로는 특히 반복해서 입력을 받을 땐 (반복문에 입력 받을 시) sys.stdin.readline()
을 넣어주는 게 좋다.
import sys
sentence = sys.stdin.readline()
import sys
sentence = int(sys.stdin.readline())
sys.stdin.readline()
으로 받은 문자열은 개행문자\n
를 포함하는데, 문자열을 int()로 형변환해주면 개행문자는 사라지고 정수형태만 남는다.
import sys
a, b = int(sys.stdin.readline().split())
# input 쓸 시
# a, b = map(int,input().split()
import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
문자열 N개라고 지정되어 있는 경우엔 for문을 이용해서 문자열 N개를 리스트에 넣어줄 수 있다.
strip()은 문자열의 앞과 끝의 공백문자를 제거해주는 함수!
cf.
lstrip()
: 인자로 받은 string의 왼쪽 공백문자 제거
rstrip()
: 인자로 받은 string의 오른쪽 공백문자 제거
https://growingarchive.tistory.com/157
N = int(input())
stack = []
for i in range(N):
order = input()
a = order.split()[0]
if a == "push":
stack.append(int(order.split()[1]))
elif a == "pop":
if len(stack) > 0 :
print(stack.pop())
else :
print(-1)
elif a == "size":
print(len(stack))
elif a == "empty":
if len(stack) == 0 :
print(1)
else :
print(0)
elif a == "top":
if len(stack) == 0 :
print(-1)
else :
print(stack[-1])
import sys
N = int(sys.stdin.readline())
stack = []
for i in range(N):
order = sys.stdin.readline()
a = order.split()[0]
if a == "push":
stack.append(int(order.split()[1]))
elif a == "pop":
if len(stack) > 0 :
print(stack.pop())
else :
print(-1)
elif a == "size":
print(len(stack))
elif a == "empty":
if len(stack) == 0 :
print(1)
else :
print(0)
elif a == "top":
if len(stack) == 0 :
print(-1)
else :
print(stack[-1])