"꾸준하고 완벽한 한 걸음"

Algorithm

Stack

kimyoungrok 2025. 2. 19. 23:00
728x90

목록

  • Stack이란?
  • Python에서 Stack 구현 방법
  • ✏️ 연습 문제

📚 Stack

후입선출(LIFO, Last In, First Out) 구조를 가진 자료구조

💡 가장 나중에 삽입된 데이터가 가장 먼저 삭제됩니다!

 

스택의 주요 연산

  • push(x): 스택의 맨 위에 요소 x를 추가한다.
  • pop(): 스택의 맨 위 요소를 제거하고 반환한다.
  • top() / peek(): 스택의 맨 위 요소를 제거하지 않고 반환한다.
  • size(): 스택에 포함된 요소의 개수를 반환한다.
  • isEmpty(): 스택이 비어 있는지 확인한다.

Python에서 Stack 구현 방법

Python에서는 내장 자료구조인 list 를 사용해 스택을 구현할 수 있습니다.

스택 정의

Python의 list를 사용해 stack을 선언합니다.

stack = [] # or list()

Push

리스트의 append()는 push와 동일한 기능을 수행합니다.

스택의 맨 위에 요소를 추가합니다.

stack.append(3) 
stack.append([1, 2]) 
stack.append("4")
stack.append("56")

# stack = [3, [1, 2], "4", "56"]

Pop

리스트의 pop()은 pop와 동일한 기능을 수행합니다.

스택의 맨 위에 있는 요소를 제거하고 값을 반환합니다.

stack.pop() # stack = [3, [1, 2], "4"]
print(stack.pop()) # 출력 : "4", stack = [3, [1, 2]]

Top / Peek

스택의 맨 위에 있는 요소를 반환만 합니다.

print(stack[-1]) # 출력 : [1, 2], stack = [3, [1, 2]]

Size

len()은 스택에 포함된 요수의 개수를 반환합니다.

print(len(stack)) # 출력 : 2

IsEmpty

빈 리스트이거나, 요소의 개수를 통해 스택이 비었는지 쉽게 확인할 수 있습니다.

print(stack) # 출력 : [3, [1, 2]]
stack.pop()
stack.pop()
print(stack) # 출력 : []

if not stack or len(stack) == 0:
    print("스택이 비었음!")

✏️ 연습 문제

Silver III : BOJ 01935, 후위 표기식2

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

💡 수식을 차례대로 Stack에 저장하고, 부호를 입력 받았을 때 필요한만큼 꺼내 계산해보세요

 

Silver II : BOJ 10799, 쇠막대기

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

💡오른쪽 괄호를 만나면 어떤 작업을 수행해야 할까요?

 

Gold IV : BOJ 02800, 괄호 제거

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

💡괄호의 쌍에 대한 조합 문제를 해결하고, 문자열 결과를 출력하세요

728x90

'Algorithm' 카테고리의 다른 글

Sieve of Eratosthenes  (0) 2025.02.19
Euclidean Algorithm  (0) 2025.02.19
LCA, (Lowest Common Ancestor, 최소 공통 조상)  (0) 2025.01.25
Recursive Call  (0) 2024.11.23
[파이썬 자료구조와 알고리즘 for Beginner] 연습문제 6 정답  (0) 2024.04.01