python

[python]스택(stack)

다있는닉네임 2023. 3. 7. 09:21

스택

배열의 끝에서만 데이터를 접근할 수 있는 선형 자료구조

후입선출(LIFO)구조임

시간복잡도는 모두 O(1)임

python에서 스택 구현

LIST를 이용해 구현을 해볼 것이다.

  • push() 스택의 가장 마지막 부분에 원소를 추가한다.
stack = [1,2]
stack.append(3)

>> [1,2,3]

list의 append를 이용

  • pop() 스택 가장 마지막 있는 원소를 삭제하고 그 원소를 반환
stack = [1,2,3]
stack.pop()
>> 3
  • top() 스택 가장 마지막에 있는 원소 가져오기
stack = [1,2,3]
stack[-1]
>> 3
  • peek() 스택 가장 마지막에 있는 원소 가져오기
stack = [1,2,3]
stack[-1]
>> 3

top, peek 둘 다 list의 마지막 인덱스의 값을 가져오기 위해 list [-1] 이용

  • empty() 스택이 비어 있는지 확인
stack = [1,2,3]
if not stack:
  print('is empty')
else:
  print('is not empty')
  
>> is empty

if문을 이용해  list가 비었는지 확인 후 비어있다면, 'is empty' 출력 비어있지 않다면 'is not empty' 출력

  • size() 스택 크기 확인
stack = [1,2,3]
len(stack)
>> 3

리스트의 길이를 구해주는 len을 사용하여 스택의 크기를 구해 줌

 

스택을 익히기에 괜찮은 문제가 있다. 한 번 풀어보면 좋을 것 같다!

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

 

10828번: 스택

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

www.acmicpc.net