우선 간단히 스택 구조에 대해서 정리해보자면, 스택(stack)은 LIFO(Last In First Out) 구조이다. 즉, 가장 최근에 스택에 추가한 항목이 가장 먼저 나오는 항목이 된다.
아마 C/C++로 했으면 코드가 길어지고 조금은 어려웠을지도 모르겠다고 느껴지겠지만,
확실히 파이썬으로 하니 간단하게 처리할 수 있었다.
파이썬에서는 C++처럼 스택에 대한 STL은 없지만, list의 append, pop 메서드를 활용하여 간단하게 처리할 수 있다.
자세한 부분은 https://docs.python.org/ko/3/tutorial/datastructures.html를 참고하면 된다.
대신 백준에서 파이썬 코드를 제출할 때, input()을 활용하면 시간 초과가 뜬다.
다라서, sys.stdin.readline()을 사용해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import sys
num = int(sys.stdin.readline())
stack = []
i = 0
for i in range(num):
stack_word = sys.stdin.readline()
if stack_word[:4] == "push":
stack.append(int(stack_word[5:]))
if stack_word[:3] == "pop":
if len(stack) != 0:
print(stack.pop())
else:
print(len(stack) - 1)
elif stack_word[:4] == "size":
print(len(stack))
elif stack_word[:5] == "empty":
if len(stack) == 0:
print(1)
else:
print(0)
elif stack_word[:3] == "top":
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
else:
pass
i += 1
|
cs |
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
★파이썬 실행시간 나타나게 하는 방법★ (0) | 2021.08.25 |
---|---|
[백준] 10773_제로 파이썬 (0) | 2021.08.25 |
[백준] 10814_나이순 정렬 파이썬 (0) | 2021.08.25 |
파이썬 입문자는 꼭 알아야 하는 사이트: 파이썬 튜터 (0) | 2021.08.16 |
베스킨라빈스 31 게임 파이썬 (0) | 2021.08.15 |