문제: 괄호의 짝이 맞는지 판별하는 함수 구현. 괄호의 짝이 맞으면 True, 짝이 맞지 않으면 False를 반환
| s | 반환값 |
| (())() | True |
| ((())() | False |

- 리스트가 비었으면 False
- 리스트가 차 있으면 True

# 괄호 짝 맞추기
def solution(s):
stack = [ ] # 여는 괄호 '(' 를 담아둘 스택
for c in s: # 문자열의 각 문자 c를 하나씩 확인
if c == '(': # 만약 여는 괄호라면
stack.append(c) # 스택에 push (쌓아둔다)
elif c == ')': # 만약 닫는 괄호라면
if not stack: # 스택이 비어 있다면 (여는 괄호가 없는데 닫는 괄호가 나온 경우)
return False # 잘못된 괄호 문자열 → False 반환
stack.pop() # 스택에서 하나 꺼내서 '('와 ')'를 짝지어 제거
if stack: # 반복이 끝난 뒤에도 스택에 '('가 남아 있다면
return False # 닫히지 않은 괄호가 있으므로 False
return True # 모든 괄호가 올바르게 짝지어진 경우 True
# 테스트
print(solution('(())()'), solution('((())()'))
# (())() → 올바른 괄호 → True
# ((())() → 닫히지 않은 '(' 남음 → False
'컴퓨터 알고리즘' 카테고리의 다른 글
| ChatGPT 이미지 오류(+ 이진트리) (0) | 2025.10.03 |
|---|---|
| 덱 Deque을 큐처럼 활용하기(+ 파이썬) (0) | 2025.09.28 |
| 큐 Queue 정리(+ 큐 Queue로 풀 수 있는 프로그래밍 문제, 파이썬) (0) | 2025.09.28 |
| 10진수를 2진수로 변환하기(+ 스택으로 풀 수 있는 프로그래밍 문제, 파이썬) (0) | 2025.09.28 |
| 스택 정리(+ 스택으로 풀 수 있는 프로그래밍 문제, 파이썬) (0) | 2025.09.28 |