알고리즘/Java

[python] 백준 스택(10828)

유리코딩 2022. 1. 9. 19:14
반응형

알고리즘

python 백준 스택(10828)

 

1. 문제

https://www.acmicpc.net/problem/10828

 

2. 풀이

  • 각각 push, pop, size, enpty, top의 조건에 맞는 함수를 만들어 for문을 돌려 값을 구했다.
  • for문에서 command를 splitg하여 사용한 이유는 입력값 중 push는 'push 1'의 형태로 입력되기 때문이다.
import sys

input = sys.stdin.readline
n = int(input())

stack = []


def push(x):
    stack.append(x)


def pop():
    if len(stack) == 0:
        print(-1)
    else:
        print(stack.pop())


def size():
    print(len(stack))


def empty():
    if len(stack) == 0:
        print(1)
    else:
        print(0)


def top():
    if len(stack) == 0:
        print(-1)
    else:
        print(stack[-1])


for i in range(n):
    command = input().split()
    if command[0] == 'push':
        push(command[1])
    if command[0] == 'pop':
        pop()
    if command[0] == 'size':
        size()
    if command[0] == 'empty':
        empty()
    if command[0] == 'top':
        top()

 

[비슷하지만 조금 다른 풀이]

  • 위의 풀이와 똑같은 풀이지만 함수를 따로 만들지 않고 바로 for문을 돌리면서 if로 조건을 붙여주었다.
for i in range(n):
    command = sys.stdin.readline().split()

    if command[0] == 'push':
        stack.append(command[1])

    elif command[0] == 'pop':
        if len(stack) == 0:
            print(-1)
        else:
            print(stack.pop())

    elif command[0] == 'size':
        print(len(stack))

    elif command[0] == 'empty':
        if len(stack) == 0:
            print(1)
        else:
            print(0)

 

 

[느낀점]

  • 스택의 개념을 이해하고 적용해보기 좋은 쉬운 문제였다.

 

반응형