From 86fccd054d7c55588ab56a4490d8b235fcc76366 Mon Sep 17 00:00:00 2001 From: j2h30728 <60846068+j2h30728@users.noreply.github.com> Date: Sat, 11 Jul 2026 22:35:21 +0900 Subject: [PATCH 1/6] week3: 125. Valid Palindrome --- valid-palindrome/j2h30728.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 valid-palindrome/j2h30728.ts diff --git a/valid-palindrome/j2h30728.ts b/valid-palindrome/j2h30728.ts new file mode 100644 index 000000000..440b56a6e --- /dev/null +++ b/valid-palindrome/j2h30728.ts @@ -0,0 +1,19 @@ +/** + * 시간 복잡도: O(n) + * 공간 복잡도: O(n) + */ +function isPalindrome(s: string): boolean { + let string = ""; + for (const ch of s) { + if ((ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z")) { + string += ch.toLowerCase(); + } + } + + for (let i = 0; i < string.length / 2; i++) { + if (string[i] !== string[string.length - i - 1]) { + return false; + } + } + return true; +} From 965f5e1fea20e6c9561ed326233b2b3a56d9e6f7 Mon Sep 17 00:00:00 2001 From: j2h30728 <60846068+j2h30728@users.noreply.github.com> Date: Sat, 11 Jul 2026 22:36:54 +0900 Subject: [PATCH 2/6] week3: 191. Number of 1 Bits --- number-of-1-bits/j2h30728.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 number-of-1-bits/j2h30728.ts diff --git a/number-of-1-bits/j2h30728.ts b/number-of-1-bits/j2h30728.ts new file mode 100644 index 000000000..ebbc2d47e --- /dev/null +++ b/number-of-1-bits/j2h30728.ts @@ -0,0 +1,13 @@ +/** + * 시간 복잡도: O(log n) + * 공간 복잡도: O(1) + */ +function hammingWeight(n: number): number { + let sum = 0; + + while (n > 0) { + sum += Math.abs(n % 2); + n = Math.floor(n / 2); + } + return (sum += n); +} From 817cf7cebff96ea04ca2554923d67f6d42b48088 Mon Sep 17 00:00:00 2001 From: j2h30728 <60846068+j2h30728@users.noreply.github.com> Date: Sat, 11 Jul 2026 23:02:47 +0900 Subject: [PATCH 3/6] week3: 39. Combination Sum --- combination-sum/j2h30728.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 combination-sum/j2h30728.ts diff --git a/combination-sum/j2h30728.ts b/combination-sum/j2h30728.ts new file mode 100644 index 000000000..b7a1cfae3 --- /dev/null +++ b/combination-sum/j2h30728.ts @@ -0,0 +1,28 @@ +/** + * 시간 복잡도: O(n^target) + * 공간 복잡도: O(target) + */ +function combinationSum(candidates: number[], target: number): number[][] { + const result: number[][] = []; + const current: number[] = []; + + function backtracking(index: number, remain: number) { + if (remain === 0) { + result.push([...current]); + return; + } + + if (remain < 0) { + return; + } + + for (let i = index; i < candidates.length; i++) { + current.push(candidates[i]); + backtracking(i, remain - candidates[i]); + current.pop(); + } + } + + backtracking(0, target); + return result; +} From ba1bf833c8a3567b40d863829d2862089007b9be Mon Sep 17 00:00:00 2001 From: j2h30728 <60846068+j2h30728@users.noreply.github.com> Date: Sat, 11 Jul 2026 23:38:39 +0900 Subject: [PATCH 4/6] week3:91. Decode Ways --- decode-ways/j2h30728.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 decode-ways/j2h30728.ts diff --git a/decode-ways/j2h30728.ts b/decode-ways/j2h30728.ts new file mode 100644 index 000000000..29713a5b1 --- /dev/null +++ b/decode-ways/j2h30728.ts @@ -0,0 +1,24 @@ +/** + * 시간 복잡도: O(n) + * 공간 복잡도: O(n) + */ +function numDecodings(s: string): number { + const dp = new Array(s.length + 1).fill(0); + dp[0] = 1; + dp[1] = parseInt(s[0]) === 0 ? 0 : 1; + + for (let i = 2; i <= s.length; i++) { + dp[i] = 0; + + if (parseInt(s[i - 1]) !== 0) { + dp[i] += dp[i - 1]; + } + if ( + parseInt(s.slice(i - 2, i)) <= 26 && + parseInt(s.slice(i - 2, i)) >= 10 + ) { + dp[i] += dp[i - 2]; + } + } + return dp[s.length]; +} From 0444130cb72bc65de11bce831e4a8a9f7b1d3470 Mon Sep 17 00:00:00 2001 From: j2h30728 <60846068+j2h30728@users.noreply.github.com> Date: Sat, 11 Jul 2026 23:52:41 +0900 Subject: [PATCH 5/6] week3: 53. Maximum Subarray --- maximum-subarray/j2h30728.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 maximum-subarray/j2h30728.ts diff --git a/maximum-subarray/j2h30728.ts b/maximum-subarray/j2h30728.ts new file mode 100644 index 000000000..b8254b165 --- /dev/null +++ b/maximum-subarray/j2h30728.ts @@ -0,0 +1,28 @@ +/** + * 시간 복잡도: O(n) + * 공간 복잡도: O(n) + */ +function maxSubArray1(nums: number[]): number { + const dp = new Array(nums.length).fill(0); + dp[0] = nums[0]; + + for (let i = 1; i < nums.length; i++) { + dp[i] += Math.max(dp[i - 1] + nums[i], nums[i]); + } + return Math.max(...dp); +} + +/** + * 시간 복잡도: O(n) + * 공간 복잡도: O(1) + */ +function maxSubArray2(nums: number[]): number { + let max = nums[0]; + let current = nums[0]; + + for (let i = 1; i < nums.length; i++) { + current = Math.max(current + nums[i], nums[i]); + max = Math.max(max, current); + } + return max; +} From a8579019e8d25442dd003f1cbd616fca11235cb7 Mon Sep 17 00:00:00 2001 From: j2h30728 <60846068+j2h30728@users.noreply.github.com> Date: Sat, 11 Jul 2026 23:58:11 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[docs](week3):=20=EC=8B=9C=EA=B0=84=20?= =?UTF-8?q?=EB=B3=B5=EC=9E=A1=EB=8F=84=20=EC=84=A4=EB=AA=85=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- combination-sum/j2h30728.ts | 4 ++-- number-of-1-bits/j2h30728.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/combination-sum/j2h30728.ts b/combination-sum/j2h30728.ts index b7a1cfae3..9a4b91f23 100644 --- a/combination-sum/j2h30728.ts +++ b/combination-sum/j2h30728.ts @@ -1,6 +1,6 @@ /** - * 시간 복잡도: O(n^target) - * 공간 복잡도: O(target) + * 시간 복잡도: O(k * n^k) (n: candidates 길이, k: target / min(candidates) 최대 깊이) + * 공간 복잡도: O(k) */ function combinationSum(candidates: number[], target: number): number[][] { const result: number[][] = []; diff --git a/number-of-1-bits/j2h30728.ts b/number-of-1-bits/j2h30728.ts index ebbc2d47e..c478ddf5a 100644 --- a/number-of-1-bits/j2h30728.ts +++ b/number-of-1-bits/j2h30728.ts @@ -1,5 +1,5 @@ /** - * 시간 복잡도: O(log n) + * 시간 복잡도: O(n) (n: 입력값의 비트 수) * 공간 복잡도: O(1) */ function hammingWeight(n: number): number {