[스택]-10828번
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
My answer
import sys
n=int(sys.stdin.readline())
tmp=[]
for _ in range(n):
board=[]
board=sys.stdin.readline().split()
if(board[0]=="push"):
tmp.append(int(board[1]))
elif(board[0]=="top"):
if(tmp==[]):
print(-1)
else:print(tmp[-1])
elif(board[0]=="size"):
print(len(tmp))
elif(board[0]=="pop"):
if(tmp==[]):
print(-1)
else:
print(tmp[-1])
tmp=tmp[:-1]
elif(board[0]=="empty"):
if(tmp):
print(0)
else:
print(1)
Another answer
import sys
a=[]
n=int(input())
for i in range(n):
o=sys.stdin.readline().split(); w=o[0]
if w=="push": a.append(int(o[1]))
elif w=="pop": print(a.pop() if a else -1)
elif w=="size": print(len(a))
elif w=="empty": print(0 if a else 1)
else: print(a[-1] if a else -1)
더보기
두 코드 똑같은데 다른점은 pop할 때 나는 pop함수를 안쓰려고 직접 마지막꺼를 출력하고 삭제했고 여기서는 그냥 pop함수로 출력삭제를 한번에 했다. 아래 코드가 가독성이 더 좋아보인당.
728x90
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
| [Python/백준] #9012- [괄호] (0) | 2021.11.30 |
|---|---|
| [Python/백준] #18870 - [좌표 압축] [try_again] (0) | 2021.11.30 |
| [Python/백준] #11004- [K번째 수] (0) | 2021.11.28 |
| [Python/백준] #11652- [카드] (0) | 2021.11.28 |
| [Python/백준] #10825- [국영수] (0) | 2021.11.28 |