diff --git a/climbing-stairs/Kyojin-Hwang.js b/climbing-stairs/Kyojin-Hwang.js new file mode 100644 index 000000000..53660f07d --- /dev/null +++ b/climbing-stairs/Kyojin-Hwang.js @@ -0,0 +1,18 @@ +/** + * @param {number} n + * @return {number} + */ +var climbStairs = function(n) { + if (n <= 2) return n; + + let prev1 = 1; + let prev2 = 2; + + for (let i = 3; i <= n; i++) { + const curr = prev1 + prev2; + prev1 = prev2; + prev2 = curr; + } + + return prev2; +}; diff --git a/product-of-array-except-self/Kyojin-Hwang.js b/product-of-array-except-self/Kyojin-Hwang.js new file mode 100644 index 000000000..b30cbf370 --- /dev/null +++ b/product-of-array-except-self/Kyojin-Hwang.js @@ -0,0 +1,24 @@ +/** + * @param {number[]} nums + * @return {number[]} + */ +var productExceptSelf = function (nums) { + const n = nums.length; + const answer = new Array(n).fill(1); + + // 왼쪽 곱 계산 + let prefix = 1; + for (let i = 0; i < n; i++) { + answer[i] = prefix; + prefix *= nums[i]; + } + + // 오른쪽 곱 계산 + let suffix = 1; + for (let i = n - 1; i >= 0; i--) { + answer[i] *= suffix; + suffix *= nums[i]; + } + + return answer; +}; diff --git a/valid-anagram/Kyojin-Hwang.js b/valid-anagram/Kyojin-Hwang.js new file mode 100644 index 000000000..8d45856c8 --- /dev/null +++ b/valid-anagram/Kyojin-Hwang.js @@ -0,0 +1,21 @@ +/** + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function(s, t) { + if (s.length !== t.length) return false; + + const count = {}; + + for (let char of s) { + count[char] = (count[char] || 0) + 1; + } + + for (let char of t) { + if (!count[char]) return false; // 없거나 개수가 0 + count[char]--; + } + + return true; +};