[프로그래머스] Lv2 올바른 괄호

do yeon kim·2022년 9월 6일
0
회고

자료구조와 관련된 동영상을 볼 때 Stack을 활용한 문제풀이에서 한번 보았던 문제 였기 때문에 기억이 나서 쉽게 풀수 있었다.

만약 이전에 풀어본적이 없다면 생각할 수 없었던 방법이다.

아마 단순히 if문과 for문을 무작정 많이 돌면서 모든 케이스에 대한 분기 처리를 했을 것이다.

자료구조에 대해서 공부했다면 자료구조를 효율적으로 그리고 알맞게 사용할 수 있는 방법에 대한 사고의 폭을 넓힐 필요가 있다.



올바른 괄호

https://school.programmers.co.kr/learn/courses/30/lessons/12909

def solution(s):
    try:
        stack = []
        for i in s:
            if i == ")":
                stack.pop()
            else:
                stack.append(i)
        if len(stack) > 0:
            return False
        return True
    except:
        return False        
    
s ="(()())"
result = solution(s)

print(result)

try-except 구문을 활용해서 error가 발생했을 때 return False해준다.
이 경우는 ")"가 왔지만 stack에는 "(" 가 없는 경우이다. 그렇다면 짝이 안 맞으므로 False가 된다.

len(stack) > 0 의 분기 처리는 모든 for문을 돌고 나서도 stack에 "(" 이 남아 있다는 것은 ")"이 없다는 경우로 짝이 맞지 않으므로 False가 된다.

for문 if문을 모두 통과했을 경우라면 모든 짝이 맞는 경우로 True를 return해준다.

0개의 댓글