From 26ef844e9f4927ba1a80ecfa4b01c022f3945642 Mon Sep 17 00:00:00 2001 From: herrinekim Date: Sat, 21 Dec 2024 02:14:55 +0900 Subject: [PATCH 1/2] add: solutions for 3 problems --- climbing-stairs/HerrineKim.js | 17 +++++++++++++++++ decode-ways/HerrineKim.js | 26 ++++++++++++++++++++++++++ valid-anagram/HerrineKim.js | 27 +++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 climbing-stairs/HerrineKim.js create mode 100644 decode-ways/HerrineKim.js create mode 100644 valid-anagram/HerrineKim.js diff --git a/climbing-stairs/HerrineKim.js b/climbing-stairs/HerrineKim.js new file mode 100644 index 000000000..53db3b626 --- /dev/null +++ b/climbing-stairs/HerrineKim.js @@ -0,0 +1,17 @@ +// 시간복잡도: O(n) +// 공간복잡도: O(1) + +/** + * @param {number} n + * @return {number} + */ +var climbStairs = function (n) { + if (n <= 2) return n; + let prev1 = 1, prev2 = 2; + for (let i = 3; i <= n; i++) { + let curr = prev1 + prev2; + prev1 = prev2; + prev2 = curr; + } + return prev2; +}; diff --git a/decode-ways/HerrineKim.js b/decode-ways/HerrineKim.js new file mode 100644 index 000000000..0c0068885 --- /dev/null +++ b/decode-ways/HerrineKim.js @@ -0,0 +1,26 @@ +// 시간복잡도: O(n) +// 공간복잡도: O(n) + +/** + * @param {string} s + * @return {number} + */ +var numDecodings = function (s) { + const memo = {}; + + const helper = (index) => { + if (index === s.length) return 1; + if (s[index] === '0') return 0; + if (memo[index] !== undefined) return memo[index]; + + let ways = helper(index + 1); + if (index < s.length - 1 && parseInt(s.slice(index, index + 2)) <= 26) { + ways += helper(index + 2); + } + + memo[index] = ways; + return ways; + }; + + return helper(0); +}; diff --git a/valid-anagram/HerrineKim.js b/valid-anagram/HerrineKim.js new file mode 100644 index 000000000..a10713246 --- /dev/null +++ b/valid-anagram/HerrineKim.js @@ -0,0 +1,27 @@ +// 시간복잡도: O(n) +// 공간복잡도: O(1) + +/** + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function (s, t) { + if (s.length !== t.length) return false; + + const charCount = {}; + + for (const char of s) { + charCount[char] = (charCount[char] || 0) + 1; + } + + for (const char of t) { + if (!charCount[char]) { + return false; + } + charCount[char]--; + } + + return true; +}; + From 67ae62170697a69389d80ac9fdf2882748115359 Mon Sep 17 00:00:00 2001 From: herrinekim Date: Sat, 21 Dec 2024 02:17:15 +0900 Subject: [PATCH 2/2] fix: add empty lines --- climbing-stairs/HerrineKim.js | 1 + decode-ways/HerrineKim.js | 1 + 2 files changed, 2 insertions(+) diff --git a/climbing-stairs/HerrineKim.js b/climbing-stairs/HerrineKim.js index 53db3b626..37dcbf3e1 100644 --- a/climbing-stairs/HerrineKim.js +++ b/climbing-stairs/HerrineKim.js @@ -15,3 +15,4 @@ var climbStairs = function (n) { } return prev2; }; + diff --git a/decode-ways/HerrineKim.js b/decode-ways/HerrineKim.js index 0c0068885..ea2335cd2 100644 --- a/decode-ways/HerrineKim.js +++ b/decode-ways/HerrineKim.js @@ -24,3 +24,4 @@ var numDecodings = function (s) { return helper(0); }; +