코딩테스트

백준 10828번 [ 스택 ]

highgrace 2021. 10. 30. 16:05

 

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

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

크게 어렵지는 않은 문제였다.

정해진 명령어에 대해서 각각의 처리 순서를 정해주고, 스택을 구현하면 되는 정도!

문제를 보자마자 해결 방법이 머리에 떠올랐는데 푸는데 꽤 오래걸렸다..

sys.stdin.readline()에러도 한 이유였고, 파이썬 리스트로 스택을 구현할 수 있다는 사실을 구글링해야했기 때문이다.

 

파이썬 리스트로 스택 구현하기

파이썬의 기본 자료형인 list를 스택처럼 사용할 수 있다.

빈 list를 선언하고,

push는 list에 append하는 동작으로 대체할 수 있고,

pop은 list에 마지막 원소를 제거하고 리턴하는 pop()이라는 함수가 있었다.

size는 list의 길이를,

empty는 list의 길이가 0인지 여부를 출력하면 되고,

top은 list[-1]를 리턴하면 구현이 가능하다.

stack = []

# push
stack.append(arg)

# pop
# 마지막 원소를 pop하고 해당 원소를 리턴하므로 출력도 가능하다.
print(stack.pop())

# size
# 리스트의 길이는 곧 stack의 size!
print(len(stack))

# empty
# 리스트의 길이가 0이라면 비었다는 뜻이겠지?
print(int(len(stack) == 0))

# top
# 리스트의 마지막 원소는 최근에 push된 원소니까 곧 top을 의미!
print(stack[-1])

 

참고한 블로그!

https://ooeunz.tistory.com/7

 

[Python] Stack 사용하기

파이썬에서의 스택 = list를 사용 파이썬은 스택 자료구조는 따로 제공하지 않는다. 다만 기본 클래스인 list를 통해 스택을 흉내 낼 수 있다. 스택은 어떤 자료구조인가요? 스택은 가장 나중에 들

ooeunz.tistory.com