반응형
Python에서 Stack 사용법
Python에서 Stack(스택)은 LIFO(Last In, First Out) 구조를 따르는 자료 구조로, 가장 나중에 삽입된 데이터가 가장 먼저 삭제됩니다. 이번 포스트에서는 Python에서 Stack을 생성하고, 데이터를 추가 및 삭제하고, 다양한 방식으로 접근하는 방법을 살펴보겠습니다.
Stack 생성
Python에서는 Stack을 여러 가지 방법으로 구현할 수 있습니다. 가장 일반적인 방법은 `list`를 사용하는 것입니다. 또한 `collections` 모듈의 `deque`를 사용할 수도 있습니다.
리스트를 이용한 Stack 생성
stack = []
deque를 이용한 Stack 생성
from collections import deque
stack = deque()
값 추가 (Push)
`append()` 메서드를 사용하여 Stack에 값을 추가할 수 있습니다.
### 리스트를 이용한 Push
```python
stack.append(10)
stack.append(20)
stack.append(30)
print(stack) # 출력: [10, 20, 30]
```
### deque를 이용한 Push
```python
stack.append(10)
stack.append(20)
stack.append(30)
print(stack) # 출력: deque([10, 20, 30])
값 삭제 (Pop)
`pop()` 메서드를 사용하여 Stack에서 값을 삭제할 수 있습니다. 이때 가장 마지막에 추가된 값이 삭제됩니다.
### 리스트를 이용한 Pop
```python
top = stack.pop()
print(top) # 출력: 30
print(stack) # 출력: [10, 20]
```
### deque를 이용한 Pop
```python
top = stack.pop()
print(top) # 출력: 30
print(stack) # 출력: deque([10, 20])
```
최상위 값 접근 (Peek)
Stack의 최상위 값에 접근하려면 리스트의 인덱스를 사용합니다. `deque`에서도 동일한 방식으로 접근할 수 있습니다.
### 리스트를 이용한 Peek
```python
top = stack[-1]
print(top) # 출력: 20
```
### deque를 이용한 Peek
```python
top = stack[-1]
print(top) # 출력: 20
```
Stack이 비어있는지 확인
Stack이 비어있는지 확인하려면 `len()` 함수를 사용하여 Stack의 길이를 체크합니다.
### 리스트를 이용한 확인
```python
is_empty = len(stack) == 0
print(is_empty) # 출력: False
```
### deque를 이용한 확인
```python
is_empty = len(stack) == 0
print(is_empty) # 출력: False
```
Stack 사용 예제
다음은 Stack을 활용한 간단한 예제입니다. 이 예제에서는 괄호가 올바르게 짝지어졌는지 확인하는 함수를 구현합니다.
def is_balanced(expression):
stack = []
pairs = {')': '(', '}': '{', ']': '['}
for char in expression:
if char in pairs.values():
stack.append(char)
elif char in pairs.keys():
if stack == [] or stack.pop() != pairs[char]:
return False
return stack == []
# 테스트
print(is_balanced("({[]})")) # 출력: True
print(is_balanced("({[})")) # 출력: False
결론
이상으로 Python에서 Stack을 사용하는 방법을 살펴보았습니다. Stack은 매우 간단하지만, 다양한 알고리즘과 문제 해결에 유용하게 사용될 수 있는 중요한 자료 구조입니다. 더 많은 연습을 통해 Stack의 사용에 익숙해지길 바랍니다!
반응형
'Programming > Python' 카테고리의 다른 글
Matplotlib Warning을 출력하지 않게 하는 방법 (0) | 2024.06.29 |
---|---|
Python Text Write 방법 정리 (0) | 2024.05.26 |
Python 라이브러리 백업/복원 (0) | 2024.05.25 |
주피터 노트북 외부에서 실행하기 (0) | 2024.05.23 |
Python Thread 사용 시 주의해야할 점 (0) | 2024.05.17 |