알고리즘

[백준 알고리즘 기초 1/2] 10828번 스택 파이썬(python)

☆★※☆★※ 2021. 9. 12. 10:05
반응형

1 .문제 번호: 10828번

2. 문제 출처

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

3. 풀이과정

  • 각 기능 별 메소드를 정의하여 문제를 풀었다.

4.어려웠던 점

  • 문제 자체는 어렵지 않게 쉽게 풀었는데 계속 시간 초과가 발생하였다.
  • 최대한 더 간결하게 작성하려 했지만 계속 시간 초과가 발생하여 자료를 찾아보았다.
  • input()함수를 사용할 경우 시간초과가 발생한다고 한다.
  • import sys를 정의하고sys.stdin.readline() 사용하여 해결하였다.

최종 코드

import sys

def push(stack,x):
    stack.append(x)
    return stack
def pop(stack):
    if len(stack):
        return print(stack.pop(-1))
    return print(-1)
def size(stack):
    return print(len(stack))
def is_empty(stack):
    if len(stack): return print(0)
    else: print(1)
def top(stack):
    if len(stack):
        return print(stack[-1])
    return print(-1)

stack = []

N = int(sys.stdin.readline())

for _ in range(N):
    cmd = list(sys.stdin.readline().split())
    if cmd[0] == 'push':
        stack = push(stack,cmd[1])
    elif cmd[0] == 'pop':
        pop(stack)
    elif cmd[0] == 'size':
        size(stack)
    elif cmd[0] == 'empty':
        is_empty(stack)
    elif cmd[0] == 'top':
        top(stack)

반응형