본문 바로가기
코딩테스트

[Python] 백준 10828번 - 스택

by 박매트 2024. 6. 3.

 

나의 답 (시간 초과)

        
N = int(input())

stack = []
mode = {"pop": 0 ,"size":1,"empty":2,"top":3, "push" : 4}

for i in range (N):
    li = input().split()
    

    if len(li) == 2:
        stack.append(li[1])
        continue

    index = mode[li[0]]
    n = len(stack)
    
    if index == 0:
        if n==0:
            print(-1)
        else:
            print(stack.pop())
            
    elif index == 1:
        print(len(stack))

    elif index == 2:
        if n==0:
            print(1)
        else:
            print(0)

    elif index == 3:
        if n == 0:
            print(-1)
        else:
            print(stack[n-1])

 

도저히 줄이려고 해도 시간 초과가 나서 답을 봐버렸다.

입력 받는 함수를 input() 이 아닌, sys.stdin.readLine()을 쓰니 통과할 수 있었다.

딕셔너리도 간만에 쓰고, ㅎ_ㅎ 시간을 줄여보려고 했지만 입력받는 함수가 문제였던 것 .. !

 

import sys

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

stack = []
mode = {"pop": 0 ,"size":1,"empty":2,"top":3,"push":4}

for i in range (N):
    li = sys.stdin.readline().split()
    n = len(stack)
    
    index = mode[li[0]]
    
    if index == 0:
        if n==0:
            print(-1)
        else:
            print(stack.pop())
            
    elif index == 1:
        print(len(stack))

    elif index == 2:
        if n==0:
            print(1)
        else:
            print(0)

    elif index == 3:
        if n == 0:
            print(-1)
        else:
            print(stack[-1])

    elif index == 4:
        stack.append(li[1])

 

🌟🌟🌟🌟🌟🌟🌟

입출력 속도 비교 : sys.stdin.readline > raw_input() > input()