1. SOLUTION
괄호 검증은 stack 활용 기본 문제다.
이 문제 같은 경우에는 괄호 종류가 소괄호 한 가지 뿐이라 구현 난이도가 그렇게 어렵지는 않은 편이다.
반복문을 통해 문자열을 돌면서 괄호를 stack에 넣었다 뺐다 하면서 짝을 맞춰보면 된다.
왼쪽 괄호/오른쪽 괄호일 때로 나누어서 생각해보면 간단히 풀 수 있는 문제!
- 현재 괄호가 '(' 일 때 : stack에 push
- 현재 괄호가 ')' 일 때
- stack이 비어있으면 : 짝이 맞지 않는다는 뜻! false
- stack이 비어있지 않으면 : stack 마지막에 들어가있는 '(' 를 pop해서 제거해준다
- 반복문이 종료된 이후 stack에 남아 있는 원소가 있다면 : 짝이 맞지 않는 것이므로 false 출력
2. CODE
def solution(s):
answer = True
stack = []
# 문자열을 돌면서 stack에 넣어주기
for i in s:
if i == '(': # i가 '('일 때 : stack에 넣기
stack.append(i)
else: # i가 ')'일 때
if stack: # stack이 비어있지 않으면 '('제거
stack.pop()
else: # stack이 비어있으면 flase
answer = False
if stack: # for문 다 돌았는데 stack이 비어있지 않으면 false
answer = False
return answer
3. 결과
알고리즘 재활운동이 필요해서 기본 문제들부터 차근차근 풀어보면서 블로그에 정리도 해 보려고 한다.
중괄호/대괄호까지 포함된 괄호 검증 문제도 있으니 그것들도 다시 한 번 풀어보도록 하자!
댓글