문제 풀이
def solution(s):
answer = True
stack = []
for i in s:
if stack:
if i == "(":
stack.append(i)
else:
if stack[-1] == "(":
stack.pop()
else:
stack.append(i)
if len(stack) !=0:
answer = False
return answer
- 해당 문제는 "()"가 한 짝일 때만 괄호라고 보기에 따로 ")(" 일 경우는 판단하지 않아도 된다.
- "("는 전부 stack에 넣어주며 진행하고 이때, stack[-1] 지점의 문자와 해당 for문을 도는 문자의 () 짝이 맞다면 스택에 있는 문자는 빼준다.
- 결과적으로 짝이 맞다면 그대로 answer = True를 반환할 것이고 맞지 않는다면 ")" "("가 stack 안에 있으므로 answer = False로 반환할 것이다
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 정수 제곱근 판별 (0) | 2022.08.06 |
---|---|
[프로그래머스][구현] - 시저 암호(파이썬/python) (0) | 2022.08.01 |
[프로그래머스][완전 탐색] - 최소 직사각형(파이썬/Python) (0) | 2022.07.14 |
[프로그래머스][Lv1] - 체육복 (그리디 알고리즘)(파이썬/Python) (0) | 2022.07.13 |
[프로그래머스][Lv1] - 두 개 뽑아서 더하기(파이썬/Python) (0) | 2022.07.09 |