(프로그래머스 Lv.2) 올바른 괄호 / with.Stack
문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/12909
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(s):
stack = []
for i in s:
if i == '(':
stack.append(i)
elif i == ')':
if stack:
stack.pop()
else:
return False
return len(stack) == 0
풀이
- 빈 리스트를 생성해놓고,
- s의 요소를 빼기 위해 반복문을 돌리는데,
- 요소(i)가 만약 ‘(‘면 빈 리스트에 현재 요소 ‘(‘를 append한다.
- 반대로 만약 요소가 ‘)’고,
- 리스트가 비어있지 않으면, 리스트에 앞서 들어가있는 ‘(‘를 pop한다. 왜냐면 그래야 ‘()’ 요렇게 괄호 짝이 지어지기 때문이다.
- 반대로 만약 ‘)’이 나왔는데, 리스트가 비어있다면 False를 return한다. 왜냐면 짝이 없다는 소리니까 ㅇㅇ.
- 그 후 검증(?)차원에서 stack이 비어있는지 체크하고, 비어있다면(리스트 길이가 0이라면) True를 return한다. 왜냐면 4-1에서 괄호 짝이 맞으면 pop을 했기 때문이다.
This post is licensed under CC BY 4.0 by the author.