상세 컨텐츠

본문 제목

백준 10828 - 스택 (자료구조, 파이썬)

알고리즘/백준 단계별 문제

by 테크투아트 2020. 12. 27. 10:18

본문

스택(stack)

 

한쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조

마지막으로 넣은 것이 가장 먼저 나오기 때문에 Last In First Out(LIFO) 라고도 한다.

  • push : 스택에 자료를 넣는 연산
  • pop : 스택에서 자료를 빼는 연산
  • top : 스택의 가장 위에 있는 자료를 보는 연산
  • empty : 스택이 비어있는지 아닌지를 알아보는 연산
  • size : 스택에 저장되어 있는 자료의 개수를 알아보는 연산

 

 

www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

먼저 각각의 함수를 구현합니다.

사용자 입력은 string 값으로 받는 것이기 때문에 in 을 사용해서 명령어를 구분해주고, 사용자 입력에 맞는 함수를 실행합니다.

import sys


# 1. push X
def push(stack, x):
    stack.append(x)
    return stack

# 2. pop
def pop(stack):
    if(stack):
        num = stack.pop()
    else:
        num = -1
    print(num)
    return stack

# 3. size
def size(stack):
    print(len(stack))

# 4. empty
def empty(stack):
    if(stack):
        print(0)
    else:
        print(1)

# 5. top
def top(stack):
    if(stack):
        print(stack[-1])
    else :
        print(-1)



stack = []
sys.stdin.readline()

for line in sys.stdin:
    if("push" in line):
        x = line.split()[-1]
        push(stack, int(x))
    elif ("pop" in line):
        pop(stack)
    elif ("size" in line):
        size(stack)
    elif ("empty" in line):
        empty(stack)
    elif ("top" in line):
        top(stack)
    else:
        print("error")

관련글 더보기