반응형
풀이
대표적인 스택 문제이다. 알고리즘은 다음과 같다.
- 괄호를 순회하며 다음의 규칙을 수행한다.
- 현재 순회하는 괄호가 ( 라면 스택에 넣는다
- 현재 순회하는 괄호가 ) 라면 다음의 규칙을 수행한다.
- 스택에 ( 괄호가 없다면 올바르게 짝지을 수 없으므로 False를 반환한다.
- 스택에서 ( 괄호를 꺼내 짝지어준다(없앤다)
- 순회가 끝났다면 다음의 규칙을 수행한다.
- 스택에 남아있는 괄호가 없다면 모든 괄호가 올바르게 짝지어진 것이므로 True를 반환한다.
- 스택에 괄호가 남아있다면 짝을 지어주지 못한 괄호가 있는 것이므로 False를 반환한다.
def solution(s):
stack = []
for i in s:
# "(" 는 스택에 넣음
if i == "(":
stack.append("(")
else:
# ")" 가 나왔는데 스택에 "(" 가 없으면 잘못된 괄호
if not stack:
return False
else:
stack.pop()
# 순회가 끝났는데 스택이 비어있지 않으면 잘못된 괄호
return False if stack else True
반응형
'알고리즘 연습 > 스택' 카테고리의 다른 글
[🥇4 / 백준 1662 / 파이썬] 압축 (0) | 2024.07.16 |
---|---|
[🥇4 / 백준 16120 / 파이썬] PPAP (0) | 2024.06.30 |
[🥈3 / 백준 12789 / 파이썬] 도키도키 간식드리미 (0) | 2023.08.09 |
[🥈4 / 백준 28278 / 파이썬] 스택 2 (0) | 2023.08.07 |
[🥈3 / 백준 17952 / 파이썬] 과제는 끝나지 않아! (2) | 2022.09.03 |