Programming/Python

Python Stack 사용하기

느리게 걷는 즐거움 2024. 6. 15. 16:26
반응형

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

반응형