728x90
반응형

Python 문제풀이

import sys

n = int(input())
x=[]
for i in range(n):
    # 입력을 input을 쓰지말고 이렇게 활용해야 빠르게 풀 수 있다.
    order= sys.stdin.readline().rstrip()

    if order =='pop':
        if len(x)==0:
            print(-1)
        else:
            print(x.pop())
    elif order =='size':
        print(len(x))
    elif order =='empty':
        if len(x)==0:
            print(1)
        else:
            print(0)
    elif order =='top':
        if len(x)==0:
            print(-1)
        else:
            print(x[len(x)-1])
    else:
        x.append(order.split()[1])

스택을 구현하는 문제입니다. 

 

pop의 경우에는 기본적으로 존재하는 pop함수를 사용하여 리스트 마지막 요소(최근요소)를 지우고 출력하도록 합니다.

 

top의 경우에는 리스트 마지막 요소를 출력하면 되기 때문에 x[리스트길이 -1]을 출력해줍니다.

 

push의 경우는 'push 365' 등으로 입력받아지기 때문에 띄어쓰기를 기준으로 문자열을 분리해주는 split를 사용하고 뒷부분 문자열인 365가 필요하기 때문에 [1]을 붙여주어 append로 추가해줬습니다.

 

다만 이렇게 구현해도 시간초과로 정답처리를 받을 수 없는 경우가 있습니다.

그 경우에는 sys.stdin.readline().rstrip()를 사용하여 입력을 받게된다면 정말 빠르게 효율이 상승합니다.. 평소에도 이걸로 문자열을 받아야하나 싶었습니다.

728x90
반응형

+ Recent posts