diff --git a/valid-parentheses/jongwanra.py b/valid-parentheses/jongwanra.py new file mode 100644 index 000000000..1ae426fcc --- /dev/null +++ b/valid-parentheses/jongwanra.py @@ -0,0 +1,46 @@ +""" +[Problem] +https://leetcode.com/problems/valid-parentheses/ + +[Brainstorming] +1. 여는 괄호가 나올 경우에 Stack에 Push한다. +2. 닫는 괄호가 나왔을 경우에 Stack 가장 위에 여는 괄호와 일치 여부를 확인한다. + +이렇게 했을 때, 시간 복잡도는 O(N)으로 예상한다. (여기서 N은 s.length) + +[Complexity] +Time: O(N), N = s.length +Space: O(N), N = stack.length +""" + +class Solution: + def isValid(self, s: str) -> bool: + bracket_dict = {'(':')', '{':'}', '[':']'} + stack = [] + for bracket in s: + # 여는 괄호인 경우 Stack 추가 + if bracket in bracket_dict: + stack.append(bracket) + # 닫는 괄호인 경우 + else: + if not stack: + return False + if bracket_dict[stack.pop()] != bracket: + return False + + return not stack + +sol = Solution() + +# Normal Case +print(sol.isValid("()") == True) +print(sol.isValid("()[]{}") == True) +print(sol.isValid("(]") == False) +print(sol.isValid("([])") == True) +print(sol.isValid("([)]") == False) + +# Edge Case +print(sol.isValid("(") == False) +print(sol.isValid("]") == False) + +