본문 바로가기
Programming/Python

Python Stack 사용하기

by 느리게 걷는 즐거움 2024. 6. 15.
728x90
반응형

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의 사용에 익숙해지길 바랍니다!

728x90
반응형