From f72bfa3ad37ff5f1b6a18104698a2205e97545f1 Mon Sep 17 00:00:00 2001 From: limlim Date: Tue, 14 Jan 2025 18:51:24 +0900 Subject: [PATCH 1/3] valid parentheses solution --- valid-parentheses/limlimjo.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 valid-parentheses/limlimjo.js diff --git a/valid-parentheses/limlimjo.js b/valid-parentheses/limlimjo.js new file mode 100644 index 000000000..f6be55eb2 --- /dev/null +++ b/valid-parentheses/limlimjo.js @@ -0,0 +1,26 @@ +/** + * @param {string} s + * @return {boolean} + */ +var isValid = function (s) { + // 괄호 관리 스택 + const stack = []; + + // 여는 괄호, 닫는 괄호 매핑 + const brackets = { "(": ")", "{": "}", "[": "]" }; + + // for문 돌며 확인 + for (let i of s) { + // 여는 괄호일 경우 + if (brackets[i]) { + stack.push(brackets[i]); + // 닫는 괄호일 경우 + } else if (i !== stack.pop()) { + return false; + } + } + return true; +}; + +// 시간복잡도: O(n) +// 공간복잡도: O(n) From f1a2829703970dcc4b8e2753725d4eb4b29ed91b Mon Sep 17 00:00:00 2001 From: limlim Date: Fri, 17 Jan 2025 12:22:28 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[edit]=20valid=20parentheses=20solution=20-?= =?UTF-8?q?=20stack=20=EB=B9=84=EC=97=88=EC=9D=84=20=EB=95=8C=20=EA=B3=A0?= =?UTF-8?q?=EB=A0=A4=ED=95=B4=EC=84=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- valid-parentheses/limlimjo.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/valid-parentheses/limlimjo.js b/valid-parentheses/limlimjo.js index f6be55eb2..b0c8c9166 100644 --- a/valid-parentheses/limlimjo.js +++ b/valid-parentheses/limlimjo.js @@ -15,11 +15,11 @@ var isValid = function (s) { if (brackets[i]) { stack.push(brackets[i]); // 닫는 괄호일 경우 - } else if (i !== stack.pop()) { + } else if (stack.length === 0 || i !== stack.pop()) { return false; } } - return true; + return stack.length === 0; }; // 시간복잡도: O(n) From 9e1a8800d770e08f6c6ece4b60dcc5a8c9416b7e Mon Sep 17 00:00:00 2001 From: limlim Date: Fri, 17 Jan 2025 12:30:06 +0900 Subject: [PATCH 3/3] container with most water solution --- container-with-most-water/limlimjo.js | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 container-with-most-water/limlimjo.js diff --git a/container-with-most-water/limlimjo.js b/container-with-most-water/limlimjo.js new file mode 100644 index 000000000..b5abc2acb --- /dev/null +++ b/container-with-most-water/limlimjo.js @@ -0,0 +1,29 @@ +/** + * @param {number[]} height + * @return {number} + */ +var maxArea = function (height) { + // Two Pointer를 이용해서 문제를 접근해야할 것 같은데 두 포인터 중에 어떤 거를 이동시켜야하는지 이 부분이 고민이 됨. + // 그래서 이 부분은 풀이 참고 + let maxArea = 0; + let start = 0, + end = height.length - 1; + + while (start < end) { + // 가로 * 세로 + let area = (end - start) * Math.min(height[start], height[end]); + + maxArea = Math.max(area, maxArea); + + // 고민했던 지점 + if (height[start] < height[end]) { + start++; + } else { + end--; + } + } + return maxArea; +}; + +// 시간복잡도: O(n) +// 공간복잡도: O(1)