소피it블로그

[LeetCode] 20번 Valid Parentheses 문제 풀이 (파이썬) 본문

CS/알고리즘 문제풀이

[LeetCode] 20번 Valid Parentheses 문제 풀이 (파이썬)

sophie_l 2022. 9. 22. 00:48

https://leetcode.com/problems/valid-parentheses/

 

Valid Parentheses - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

스택 클래스를 따로 구현하여 pop, push 메서드를 구현해줘도 되나 편의상 솔루션 클래스 안에 리스트 형식의 스택을 구현했다.

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        for c in s:
            if c == "[" or c == "(" or c == "{":
                stack.append(c)
            else:
                if stack and ((c == "]" and stack[-1] == "[") or (c == ")" and stack[-1] == "(") or (c == "}" and stack[-1] == "{")):
                    stack.pop()
                else:
                    return False
        return len(stack) == 0

처음에는 pop() 메서드 관련하여 try except 구문을 중복해서 사용했는데 그러다보니 너무 코드가 길어지고 가독성이 떨어져서, 다른 답안을 참고해 새로 작성하였다.