From 7355f6f1ee4d4b3bdfa666652af23914752f3819 Mon Sep 17 00:00:00 2001 From: moonjonghoo Date: Thu, 22 May 2025 18:06:17 +0900 Subject: [PATCH 1/5] reverse bits solution --- number-of-islands/moonjonghoo.js | 37 ++++++++++++++++++++++++++++++++ reverse-bits/moonjonghoo.js | 13 +++++++++++ 2 files changed, 50 insertions(+) create mode 100644 reverse-bits/moonjonghoo.js diff --git a/number-of-islands/moonjonghoo.js b/number-of-islands/moonjonghoo.js index e69de29bb..cc06f35cc 100644 --- a/number-of-islands/moonjonghoo.js +++ b/number-of-islands/moonjonghoo.js @@ -0,0 +1,37 @@ +/** + * @param {character[][]} grid + * @return {number} + */ +const numIslands = function (grid) { + let count = 0; + + const dfs = (i, j) => { + if ( + i < 0 || + i >= grid.length || + j < 0 || + j >= grid[i].length || + grid[i][j] === "0" + ) { + return; + } + + grid[i][j] = "0"; + + dfs(i + 1, j); + dfs(i - 1, j); + dfs(i, j + 1); + dfs(i, j - 1); + }; + + for (let i = 0; i < grid.length; i++) { + for (let j = 0; j < grid[i].length; j++) { + if (grid[i][j] === "1") { + dfs(i, j); + count++; + } + } + } + + return count; +}; diff --git a/reverse-bits/moonjonghoo.js b/reverse-bits/moonjonghoo.js new file mode 100644 index 000000000..d9590e381 --- /dev/null +++ b/reverse-bits/moonjonghoo.js @@ -0,0 +1,13 @@ +/** + * @param {number} n - a positive integer + * @return {number} - reversed bits + */ +var reverseBits = function (n) { + let result = 0; + for (let i = 0; i < 32; i++) { + result <<= 1; // 왼쪽으로 1비트 이동 + result |= n & 1; // 마지막 비트 추출해서 결과에 추가 + n >>>= 1; // 부호 없는 우측 시프트 (>>>) + } + return result >>> 0; // unsigned 32비트 정수로 변환 +}; From 5a2c87085ae89b804ceb04116b25ed85dd2bb05e Mon Sep 17 00:00:00 2001 From: moonjonghoo Date: Thu, 22 May 2025 18:10:47 +0900 Subject: [PATCH 2/5] longest-repeating-character-replacement solution --- .../moonjonghoo.js | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 longest-repeating-character-replacement/moonjonghoo.js diff --git a/longest-repeating-character-replacement/moonjonghoo.js b/longest-repeating-character-replacement/moonjonghoo.js new file mode 100644 index 000000000..09382f29b --- /dev/null +++ b/longest-repeating-character-replacement/moonjonghoo.js @@ -0,0 +1,30 @@ +/** + * @param {string} s + * @param {number} k + * @return {number} + */ +var characterReplacement = function (s, k) { + let left = 0; + let maxCount = 0; + let freq = new Array(26).fill(0); // A~Z + + let maxLength = 0; + + for (let right = 0; right < s.length; right++) { + const idx = s.charCodeAt(right) - "A".charCodeAt(0); + freq[idx]++; + maxCount = Math.max(maxCount, freq[idx]); + + let windowSize = right - left + 1; + + if (windowSize - maxCount > k) { + const leftIdx = s.charCodeAt(left) - "A".charCodeAt(0); + freq[leftIdx]--; + left++; + } + + maxLength = Math.max(maxLength, right - left + 1); + } + + return maxLength; +}; From 341a99126002166d285148ad5c6f26b8fbaa701c Mon Sep 17 00:00:00 2001 From: moonjonghoo Date: Thu, 22 May 2025 18:12:22 +0900 Subject: [PATCH 3/5] clone-graph solution --- clone-graph/moonjonghoo.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 clone-graph/moonjonghoo.js diff --git a/clone-graph/moonjonghoo.js b/clone-graph/moonjonghoo.js new file mode 100644 index 000000000..32edc5670 --- /dev/null +++ b/clone-graph/moonjonghoo.js @@ -0,0 +1,36 @@ +/** + * // Definition for a Node. + * function Node(val, neighbors) { + * this.val = val === undefined ? 0 : val; + * this.neighbors = neighbors === undefined ? [] : neighbors; + * }; + */ + +/** + * @param {Node} node + * @return {Node} + */ +var cloneGraph = function (node) { + if (!node) return null; + + const visited = new Map(); + + const dfs = (currNode) => { + if (visited.has(currNode)) { + return visited.get(currNode); + } + + // 노드 복사 + const clone = new Node(currNode.val); + visited.set(currNode, clone); + + // 이웃 노드들도 복사해서 연결 + for (let neighbor of currNode.neighbors) { + clone.neighbors.push(dfs(neighbor)); + } + + return clone; + }; + + return dfs(node); +}; From ffa0e8713591bd98177a0e47084598743a2ac86d Mon Sep 17 00:00:00 2001 From: moonjonghoo Date: Thu, 22 May 2025 18:14:41 +0900 Subject: [PATCH 4/5] palindromic-substrings solution --- palindromic-substrings/moonjonghoo.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 palindromic-substrings/moonjonghoo.js diff --git a/palindromic-substrings/moonjonghoo.js b/palindromic-substrings/moonjonghoo.js new file mode 100644 index 000000000..49c7fa13b --- /dev/null +++ b/palindromic-substrings/moonjonghoo.js @@ -0,0 +1,22 @@ +/** + * @param {string} s + * @return {number} + */ +var countSubstrings = function (s) { + let count = 0; + + const expand = (left, right) => { + while (left >= 0 && right < s.length && s[left] === s[right]) { + count++; + left--; + right++; + } + }; + + for (let i = 0; i < s.length; i++) { + expand(i, i); // 홀수 길이 중심 (예: "aba") + expand(i, i + 1); // 짝수 길이 중심 (예: "aa") + } + + return count; +}; From 098111e6b610588ada53088d7ebd82acdc3c28bb Mon Sep 17 00:00:00 2001 From: moonjonghoo Date: Thu, 22 May 2025 18:16:44 +0900 Subject: [PATCH 5/5] longest-common-subsequence solution --- longest-common-subsequence/moonjonghoo.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 longest-common-subsequence/moonjonghoo.js diff --git a/longest-common-subsequence/moonjonghoo.js b/longest-common-subsequence/moonjonghoo.js new file mode 100644 index 000000000..e0deb203f --- /dev/null +++ b/longest-common-subsequence/moonjonghoo.js @@ -0,0 +1,22 @@ +/** + * @param {string} text1 + * @param {string} text2 + * @return {number} + */ +var longestCommonSubsequence = function (text1, text2) { + const m = text1.length, + n = text2.length; + const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0)); + + for (let i = 1; i <= m; i++) { + for (let j = 1; j <= n; j++) { + if (text1[i - 1] === text2[j - 1]) { + dp[i][j] = dp[i - 1][j - 1] + 1; + } else { + dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); + } + } + } + + return dp[m][n]; +};