Coding/백준

[백준] 10828 - 스택 - (python 파이썬)

Coding Kitsune 2022. 1. 31. 10:44

문제링크 : https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

풀이과정:

처음에 스택 클래스를 구현해야하나 해서, 어떻게들 푸셨는지 블로그들을 방문해서 확인해보았다.

파이썬은 다행히 따로 클래스를 구현하지않고 리스트로들 푸셔서 같은 방식으로 풀었는데 시간초과..!

역시 백준은 input함수만 쓰면 높은확률로 시간초과가 뜬다. 궁금해서 input vs sys.stdin.readline을

알아보았다. 결론적으로 말하자면 input 내장함수는 prompt message를 출력하고 개행문자를 삭제한

값을 리턴하기 때문에 sys.stdin.readline()함수보다 느리다. 

 

답.

import sys
testcase = int(input())
stack = []
for _ in range(testcase):
    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)
    elif command[0] == "top":
        if len(stack) == 0:
            print(-1)
        else:
            print(stack[-1])

답(이미지)

 

후기 : 이번에 자료구조 수업들을 복습하면서 stack을 본지 얼마 안되서 비교적 쉽게 해결되었다.