Algorithm/BaekJoon
백준 22.03.23. 10828번 - 스택
HappyFrog
2022. 3. 23. 23:28
스택 - 위키백과, 우리 모두의 백과사전
스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄
ko.wikipedia.org
스택에 대한 설명입니다.
자료구조 스택에 대해서 모른다면 보는걸 추천합니다.

import sys
input = sys.stdin.readline
print = sys.stdout.write
def push(s, num):
s.append(num)
def pop(s):
if len(s) == 0:
return -1
else:
return s.pop(-1)
def size(s):
return len(s)
def empty(s):
if len(s) == 0:
return 1
else:
return 0
def top(s):
if len(s) == 0:
return -1
else:
return s[-1]
def command(s, *c):
if c[0] == "push":
push(s, c[1])
elif c[0] == "pop":
return pop(s)
elif c[0] == "size":
return size(s)
elif c[0] == "empty":
return empty(s)
elif c[0] == "top":
return top(s)
n = int(input())
stack = []
for i in range(n):
c = input().split()
if len(c) == 2:
command(stack, c[0], c[1])
else:
print(str(command(stack, c[0])) + "\n")
- 스택(stack)은 후입선출(Last In First Out, LIFO)의 성질을 가집니다.
- top은 스택의 가장 마지막에 저장된 것을 보여줍니다.
- pop은 스택에 가장 마지막에 저장된 것을 삭제합니다.
- push는 스택에 새로운 데이터를 저장합니다.
- empty는 스택이 비어있는지 여부에 대해 반환합니다.
- 이러한 성질을 이용하여 각 메서드 역할을 하는 함수를 만들어주었습니다.
- push의 경우에 데이터를 저장하는 것이므로 반환값이 없습니다.
- 입력값이 커맨드와 숫자일지, 커맨드만 입력될지 모르기때문에 입력값을 변수 하나로 받고 split()메서드를 이용하여 입력값이 복수면 리스트의 인덱스로 요소를 지정하여 함수에 매개변수로서 할당해줍니다.
- sys.stdout.write의 매개변수는 str형식이어야합니다. 따라서 str로 형변환을 해준 뒤 출력합니다.