From 1bc8c624dd543b37e498f018406c0b4757e3cab7 Mon Sep 17 00:00:00 2001 From: Nayeon Date: Mon, 13 Jan 2025 12:35:44 +0900 Subject: [PATCH 1/3] Add placeholder for 'Valid Parentheses' implementation. --- valid-parentheses/KwonNayeon.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 valid-parentheses/KwonNayeon.py diff --git a/valid-parentheses/KwonNayeon.py b/valid-parentheses/KwonNayeon.py new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/valid-parentheses/KwonNayeon.py @@ -0,0 +1 @@ + From 065a79d7edbc00e1ab2a2ca3fedfc3cd81c05a92 Mon Sep 17 00:00:00 2001 From: Nayeon Date: Tue, 14 Jan 2025 18:55:01 +0900 Subject: [PATCH 2/3] Solved "Valid parentheses" problem --- valid-parentheses/KwonNayeon.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/valid-parentheses/KwonNayeon.py b/valid-parentheses/KwonNayeon.py index 8b1378917..d59ce1233 100644 --- a/valid-parentheses/KwonNayeon.py +++ b/valid-parentheses/KwonNayeon.py @@ -1 +1,27 @@ +""" +Constraints: +1. 1 <= s.length <= 10^4 +2. s consists of parentheses only '()[]{}' +Time Complexity: O(n) +- 문자열의 각 문자를 한 번씩만 순회하므로 O(n) +- 각 문자에 대한 연산(push, pop)은 O(1) + +Space Complexity: O(n) +- 최악의 경우 모든 문자가 여는 괄호일 때 스택에 모두 저장 +- 따라서 입력 크기에 비례하는 O(n) 공간 필요 +""" +class Solution: + def isValid(self, s: str) -> bool: + stack = [] + pairs = {')': '(', '}': '{', ']': '['} + + for char in s: + if char in '({[': + stack.append(char) + else: + if not stack or stack[-1] != pairs[char]: + return False + stack.pop() + + return len(stack) == 0 From 83f538a8fcca891d6a8e2b62fe9777dc2c61a551 Mon Sep 17 00:00:00 2001 From: Nayeon Date: Wed, 15 Jan 2025 17:52:39 +0900 Subject: [PATCH 3/3] Add explanation for "Valid parentheses" problem. --- container-with-most-water/KwonNayeon.py | 12 ++++++++++++ valid-parentheses/KwonNayeon.py | 12 ++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 container-with-most-water/KwonNayeon.py diff --git a/container-with-most-water/KwonNayeon.py b/container-with-most-water/KwonNayeon.py new file mode 100644 index 000000000..e9afafe6c --- /dev/null +++ b/container-with-most-water/KwonNayeon.py @@ -0,0 +1,12 @@ +""" +Constraints: +1. n == height.length +2. 2 <= n <= 10^5 +3. 0 <= height[i] <= 10^4 + +Time Complexity: +- + +Space Complexity: +- +""" diff --git a/valid-parentheses/KwonNayeon.py b/valid-parentheses/KwonNayeon.py index d59ce1233..a0f361f49 100644 --- a/valid-parentheses/KwonNayeon.py +++ b/valid-parentheses/KwonNayeon.py @@ -10,6 +10,18 @@ Space Complexity: O(n) - 최악의 경우 모든 문자가 여는 괄호일 때 스택에 모두 저장 - 따라서 입력 크기에 비례하는 O(n) 공간 필요 + +풀이방법: +1. 스택을 사용하여 여는 괄호('(', '{', '[')를 저장 +2. Dictionary를 사용해 닫는 괄호와 여는 괄호의 쌍을 O(1)로 매칭 +3. 문자열을 순회하면서: + - 여는 괄호는 스택에 추가 + - 닫는 괄호가 나오면: + a) 스택이 비어있거나 + b) 스택 최상단의 괄호가 현재 닫는 괄호와 매칭되지 않으면 + -> 잘못된 괄호 문자열 + - 매칭되는 경우 스택에서 pop +4. 모든 순회가 끝난 후 스택이 비어있어야 올바른 괄호 문자열 """ class Solution: def isValid(self, s: str) -> bool: