BOJ

[백준/BOJ] python 10828번 스택

kyj0015 2023. 7. 30. 00:39

언어: python

번호: 10828

제목: 스택

등급: 실버 4

풀이 과정:

명령의 수 n을 입력받고, n번 명령을 입력 받아 if문을 사용해 명령에 따라 출력한다.

 

잘못된 코드:

n = int(input())
stack = []

for i in range(n):
    order = input().split()
    if order[0]=='push':
        stack.append(order[1])
        
    elif order[0]== 'pop':
        if len(stack)==0:
            print(-1)
        else:
            print(stack[-1])
            stack.remove(stack[-1])
            
    elif order[0]=='size':
        print(len(stack))
        
    elif order[0]=='empty':
        if len(stack)==0:
            print(1)
        else:
            print(0)
            
    elif order[0]=='top':
        if len(stack)==0:
            print(-1)
        else:
            print(stack[-1])

 

고친 코드:

import sys
input = sys.stdin.readline
n = int(input())
stack = []

for i in range(n):
    order = input().split()
    if order[0]=='push':
        stack.append(order[1])
        
    elif order[0]== 'pop':
        if len(stack)==0:
            print(-1)
        else:
            print(stack.pop())
            
    elif order[0]=='size':
        print(len(stack))
        
    elif order[0]=='empty':
        if len(stack)==0:
            print(1)
        else:
            print(0)
            
    elif order[0]=='top':
        if len(stack)==0:
            print(-1)
        else:
            print(stack[-1])

 

고친 점:

1. 시간 초과로 input = sys.stdin.readline 을 추가했다.

2. remove로 pop을 구현하려 했는데 remove는 앞에서부터 요소를 제거하는거라 에러가 떴다. pop() 함수를 사용했다.