카테고리 없음

백준 10828번 : 스택 (Python, 파이썬) - 자료구조 스택(Stack)

에르미타쥬 2019. 1. 3. 01:04

https://www.acmicpc.net/problem/10828

자료구조 중 스택(Stack) 개념을 다루고 싶어 이번 문제를 선정해서 풀어보았다. stack의 사전적 의미가 '쌓다', '더미' 인 것처럼, 자료구조로서의 스택 또한 의미가 비슷하다. 자료를 차례대로 쌓아 자료의 더미를 이룬다. 더미에서 자료를 제거할 때에는 임의로 제거하는 것이 아니라 쌓은 순서의 역순으로 제거한다.

예를 들어, 한 박스에 박스 입구 면적에 딱 맞는 벽돌들을 차례대로 담는 경우, 모든 벽돌을 다시 꺼내는 방법은 벽돌을 담은 순서의 역순으로 꺼내는 수밖에 없다.

이런 스택의 개념을 참고해서 코드를 짜보았다.

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

30

31

32

33

34

35

36

class stack:

def __init__(self):

self.items = []

def push(self, item):

self.items.append(item)

def pop(self):

if self.items == []:

return -1

else:

return self.items.pop()

def size(self):

return len(self.items)

def empty(self):

if self.items == []:

return 1

else:

return 0

def top(self):

if self.items == []:

return -1

else:

return self.items[-1]

stk = stack()

N = int(input())

for _ in range(N):

cmd = input().split(' ')

if cmd[0] == 'push':

stk.push(cmd[1])

elif cmd[0] == 'pop':

print(stk.pop())

elif cmd[0] == 'size':

print(stk.size())

elif cmd[0] == 'empty':

print(stk.empty())

elif cmd[0] == 'top':

print(stk.top())