10828 스택 문제 바로가기
접근방식
- 스택 개념에 대한 문제이다. 파이썬의 리스트와 문자열 조작만 할 수 있다면 금방 풀 수 있는 문제이다.
- 스택은 리스트 인덱스가 0인 곳에 변화가 활발하게 일어나는데 파이썬의 insert함수는 원하는 인덱스에 값을 넣을 수 있고 remove함수는 원하는 값을 뺄 수가 있어 이 두 가지를 잘 활용하였다.
- 나는 for문을 돌면서 명령 입력을 받으며 바로바로 함수로 가 출력할 수 있도록 풀었다.
파이썬 코드
import sys
n = int(sys.stdin.readline())
arr = []
def push(n,arr):
# 스택의 가장 위에 쌓는다.
arr.insert(0,n)
def pop(arr):
if len(arr) == 0:
print(-1)
# 스택의 가장 위의 값을 출력하고 배열에서 없앤다.
else:
print(arr[0])
arr.remove(arr[0])
def empty(arr):
if len(arr) == 0:
print(1)
else:
print(0)
def size(arr):
print(len(arr))
def top(arr):
if len(arr) == 0:
print(-1)
# 스택의 가장 상단 값, 즉 배열에서 가장 앞에 있는 값을 출력한다.
else:
print(arr[0])
for _ in range(n):
a = sys.stdin.readline()
if 'push' in a:
# 배열에 입력문의 숫자만 넣도록 문자열 조작을 한다
b = a.rstrip('\n')
b = b.split(' ')
push(b[1],arr)
if 'pop' in a:
pop(arr)
if 'size' in a:
size(arr)
if 'empty' in a:
empty(arr)
if 'top' in a:
top(arr)