[백준] #10828 - 스택 (파이썬, Python)

스택

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

내가 쓴 코드

그냥 input을 사용하니까 시간초과가 떠서, sys.stdin.readline을 사용했다.

import sys


input = sys.stdin.readline

n = int(input())

stack = []
for _ in range(n):
    line = input().rstrip()

    if line[-1].isdigit():
        stack.append(int(line[5:]))
    elif line == "pop":
        print(stack.pop() if stack else -1)
    elif line == "size":
        print(len(stack))
    elif line == "empty":
        print(1 if not stack else 0)
    elif line == "top":
        print(stack[-1] if stack else -1)

고친 코드

push만 숫자가 포함된 명령어라 어떻게 처리할지 고민했는데 인터넷에서 찾아보니 그냥 split 사용하는 게 더 이해하기 쉬운 방법인 거 같다.

import sys


input = sys.stdin.readline

n = int(input())

stack = []
for _ in range(n):
    line = input().split()

    if line[0] == "push":
        stack.append(int(line[1]))
    elif line[0] == "pop":
        print(stack.pop() if stack else -1)
    elif line[0] == "size":
        print(len(stack))
    elif line[0] == "empty":
        print(1 if not stack else 0)
    elif line[0] == "top":
        print(stack[-1] if stack else -1)

좋은 웹페이지 즐겨찾기