Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 22.03.23. 10828번 - 스택 본문

Algorithm/BaekJoon

백준 22.03.23. 10828번 - 스택

HappyFrog 2022. 3. 23. 23:28

 

 

스택 - 위키백과, 우리 모두의 백과사전

스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄

ko.wikipedia.org

스택에 대한 설명입니다.

자료구조 스택에 대해서 모른다면 보는걸 추천합니다.


=---ㅡㅍㅌ32

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로 형변환을 해준 뒤 출력합니다.