[BOJ] 10828. 스택(python)

레몬커드요거트·2025년 1월 21일
0

코딩테스트준비

목록 보기
5/6
post-thumbnail

예전에 풀었던 문제라서 이번엔 def로 함수들을 구현해서 풀어보았다.

🤓 1차 시도인줄 알았지만 맞는 코드

import sys

def push(x):
  command.append(x)
  #print("push함")
  return(command)

def pop():
  if len(command)==0:
    print(-1)
  else:
    x = command.pop()
    print(x)
  #print("pop함")

def size():
  print(len(command))
  #print("size함")

def empty():
  if len(command)==0:
    print(1)
  else:
    print(0)
  #print("empty함")

def top():
  if len(command)==0:
    print(-1)
  else:
    print(command[-1])
 # print("top함")

st = []
command=[]

n = int(sys.stdin.readline())
for _ in range(n):
  st = sys.stdin.readline().split()
  for i in range(len(st)):
    if st[i] == "push":
      push(st[i+1])
    elif st[i] =="pop":
      pop()
    elif st[i] == "size":
      size()
    elif st[i] =="empty":
      empty()
    elif st[i] =="top":
      top()
14
push 1
push 2
top
1
size
2
empty
0
pop
2
pop
1
pop
-1
size
0
empty
1
pop
-1
push 3
empty
0
top
3

터미널에서 입력문이랑 출력문이랑 섞여서 나오길래 def사용해서 그런가 하고 한참 고민했지만 for _ in range(n): st = sys.stdin.readline().split() for문을 이용해서 입력을 받아서 그렇게 보인거였다

아무 문제 없는 코드!

✅ 주의할 점

command.append() 를 하면 [2, 1, ….] 순서대로 뒤로 list에 push된다. stack의 개념에서 top() 을 구현하려면 list의 맨 뒤에 있는 요소를 불러오면 됨

profile
비요뜨 최고~

0개의 댓글