문제
괄호 짝 맞추기
문자열 s는 (,),{,},[,] 로만 이루어져 있음
짝이 맞으면 True, 틀리면 False
s의 길이는 1이상 40이하
입출력 예시
s | return |
---|---|
”[[]]” | true |
접근
스택의 기본 문제이다.
여는 괄호가 나오면 스택에 넣고, 닫는 괄호가 나오면 스택에서 하나 빼서 맞는 괄호쌍인지 검사한다.
딕셔너리를 이용한다면 맞는 괄호쌍인지 검사하는 코드가 간결해진다.
주의할 점은 스택이 비어있는데 닫는 괄호가 나오는 경우와 검사가 끝났는데 스택에 원소가 남아있는 경우이다.
두 경우는 모두 틀린 괄호쌍이다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(s):
match = {')' : '(', '}':'{',']':'['}
list = []
answer = True
for val in s:
if val == '(' or val == '[' or val == '{':
list.append(val)
else:
if not len(list):
answer = False
break
top = list.pop()
if match[val] != top:
answer = False
break
if len(list):
answer = False
return answer