From 95555e7221474c182986f4d4386c1626aa53786d Mon Sep 17 00:00:00 2001 From: robin Date: Wed, 18 Mar 2026 03:59:37 +0900 Subject: [PATCH 1/5] valid-palindrome --- valid-palindrome/nowrobin.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 valid-palindrome/nowrobin.js diff --git a/valid-palindrome/nowrobin.js b/valid-palindrome/nowrobin.js new file mode 100644 index 000000000..86049f76c --- /dev/null +++ b/valid-palindrome/nowrobin.js @@ -0,0 +1,23 @@ +/** + * @param {string} s + * @return {boolean} + */ +var isPalindrome = function(s) { + // 1. 소문자로 변환 + 알파벳/숫자만 남기기 + // (공백, 특수문자 제거) + s = s.toLowerCase().replace(/[^a-z0-9]/g, ""); + + const length = s.length; + + // 2. 문자열의 절반만 순회하면서 양쪽 비교 + for (let i = 0; i < length / 2; i++) { + // 왼쪽(i) vs 오른쪽(length - 1 - i) + if (s[i] !== s[length - 1 - i]) { + // 하나라도 다르면 팰린드롬 아님 + return false; + } + } + + // 3. 끝까지 문제 없으면 팰린드롬 + return true; +}; \ No newline at end of file From 7b3401fdd44f6afc1f122b4dd4f63684d44460a8 Mon Sep 17 00:00:00 2001 From: robin Date: Wed, 18 Mar 2026 04:07:40 +0900 Subject: [PATCH 2/5] number of 1 bits solution --- number-of-1-bits/nowrobin.js | 21 +++++++++++++++++++++ valid-palindrome/nowrobin.js | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 number-of-1-bits/nowrobin.js diff --git a/number-of-1-bits/nowrobin.js b/number-of-1-bits/nowrobin.js new file mode 100644 index 000000000..cf33dc9b8 --- /dev/null +++ b/number-of-1-bits/nowrobin.js @@ -0,0 +1,21 @@ +/** + * @param {number} n - 32비트 정수 + * @return {number} - 이진수에서 1의 개수 + */ +var hammingWeight = function(n) { + let setBitCount = 0; // 1의 개수를 저장할 변수 + + // n이 0이 될 때까지 반복 (모든 1비트를 제거할 때까지) + while (n !== 0) { + // 가장 오른쪽에 있는 1비트를 제거 + // 예: 101100 -> 101000 + n &= (n - 1); + + // 1비트 하나 제거했으므로 카운트 증가 + setBitCount++; + } + + // 총 1의 개수 반환 + return setBitCount; +}; + diff --git a/valid-palindrome/nowrobin.js b/valid-palindrome/nowrobin.js index 86049f76c..cc4fdecae 100644 --- a/valid-palindrome/nowrobin.js +++ b/valid-palindrome/nowrobin.js @@ -20,4 +20,4 @@ var isPalindrome = function(s) { // 3. 끝까지 문제 없으면 팰린드롬 return true; -}; \ No newline at end of file +}; From 6c7ec079ee566712de6d9e1cc7a6dc4a8c19fa7f Mon Sep 17 00:00:00 2001 From: robin Date: Sat, 21 Mar 2026 21:42:58 +0900 Subject: [PATCH 3/5] decode ways solution --- decode-ways/nowrobin.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 decode-ways/nowrobin.js diff --git a/decode-ways/nowrobin.js b/decode-ways/nowrobin.js new file mode 100644 index 000000000..634a8d1f8 --- /dev/null +++ b/decode-ways/nowrobin.js @@ -0,0 +1,30 @@ +/** + * @param {string} s + * @return {number} + */ +var numDecodings = function(s) { + if (!s || s[0] === '0') { + return 0; + } + + const n = s.length; + const dp = new Array(n + 1).fill(0); + dp[0] = 1; + dp[1] = 1; + + for (let i = 2; i <= n; ++i) { + const oneDigit = parseInt(s[i - 1]); + const twoDigits = parseInt(s.substring(i - 2, i)); + + if (oneDigit !== 0) { + dp[i] += dp[i - 1]; + } + + if (10 <= twoDigits && twoDigits <= 26) { + dp[i] += dp[i - 2]; + } + } + + return dp[n]; +}; + From 417109ed71df553fc767b5034cb11658a4523a66 Mon Sep 17 00:00:00 2001 From: robin Date: Sat, 21 Mar 2026 21:47:37 +0900 Subject: [PATCH 4/5] combination-sum --- combination-sum/nowrobin.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 combination-sum/nowrobin.js diff --git a/combination-sum/nowrobin.js b/combination-sum/nowrobin.js new file mode 100644 index 000000000..8082fa7f2 --- /dev/null +++ b/combination-sum/nowrobin.js @@ -0,0 +1,22 @@ +/** + * @param {number[]} candidates + * @param {number} target + * @return {number[][]} + */ +function combinationSum(candidates, target) { + var buffer = []; + var result = []; + search(0, target); + return result; + + function search(startIdx, target) { + if (target === 0) return result.push(buffer.slice()); + if (target < 0) return; + if (startIdx === candidates.length) return; + buffer.push(candidates[startIdx]); + search(startIdx, target - candidates[startIdx]); + buffer.pop(); + search(startIdx + 1, target); + } +}; + From fc25046ed56a51dd927f6dbc1dd437e51f0db423 Mon Sep 17 00:00:00 2001 From: robin Date: Sat, 21 Mar 2026 22:09:30 +0900 Subject: [PATCH 5/5] max subarray --- maximum-subarray/nowrobin.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 maximum-subarray/nowrobin.js diff --git a/maximum-subarray/nowrobin.js b/maximum-subarray/nowrobin.js new file mode 100644 index 000000000..99d55523e --- /dev/null +++ b/maximum-subarray/nowrobin.js @@ -0,0 +1,25 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var maxSubArray = function(nums) { + if (!nums || nums.length === 0) { + return 0; + } + + // max_so_far: overall maximum sum + let max_so_far = nums[0]; + + // max_ending_here: max sum of subarray ending at current position + let max_ending_here = nums[0]; + + for (let i = 1; i < nums.length; i++) { + // Core decision: start new or extend previous + max_ending_here = Math.max(nums[i], max_ending_here + nums[i]); + + // Update overall maximum + max_so_far = Math.max(max_so_far, max_ending_here); + } + + return max_so_far; +};