본문 바로가기

STUDY/Python

[백준] 10828번 스택 python

728x90

이 문제는 스택을 이용하여 푸는 문제이다.

 

[나의 풀이 - 첫 번째 시도]

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

for i in range(len_element):
  element = input()
  if element.find('push') != -1:
    x, y =map(str, element.split())
    stack.append(int(y))
  elif element.find('pop') != -1:
    if len(stack)==0:
      print(-1)
    else:
      print(stack[-1])
      stack.pop()
  elif element.find('top') != -1:
    if len(stack)==0:
      print(-1)
    else:
      print(stack[-1])
  elif element.find('size') != -1:
    print(len(stack))
  elif element.find('empty') != -1:
    if len(stack)==0:
      print(1)
    else:
      print(0)

시간초과가 떴다....

 

이 문제의 입력은 매우 많으므로 input() 함수가 아닌 sys.stdin.readline()함수를 사용하여야 시간 초과가 나지 않는다.

 

 

[나의 풀이 - 수정된 코드]

import sys

len_element= int(sys.stdin.readline())
stack = []

for i in range(len_element):
  element = sys.stdin.readline()
  if element.find('push') != -1:
    x, y =map(str, element.split())
    stack.append(int(y))
  elif element.find('pop') != -1:
    if len(stack)==0:
      print(-1)
    else:
      print(stack[-1])
      stack.pop()
  elif element.find('top') != -1:
    if len(stack)==0:
      print(-1)
    else:
      print(stack[-1])
  elif element.find('size') != -1:
    print(len(stack))
  elif element.find('empty') != -1:
    if len(stack)==0:
      print(1)
    else:
      print(0)

입력 받는 부분을 고치고 나니 통과 되었다!

728x90

'STUDY > Python' 카테고리의 다른 글

[백준] 18258번 큐2 python  (0) 2023.06.20
[백준] 9012번 괄호 python  (0) 2023.06.19
[자료구조] 스택 stack  (0) 2023.06.19
[프로그래머스] 문자열의 뒤의 n글자  (0) 2023.06.12
[프로그래머스] 공배수  (0) 2023.06.11