From 47ba1467a23e4087565e677c04812035b6439611 Mon Sep 17 00:00:00 2001 From: Yiseul Park Date: Wed, 8 Jul 2026 21:48:49 +0900 Subject: [PATCH 1/7] feat: 125. Valid Palindrome solution (cherry picked from commit d881c4df0b6226a9f1b52cb2ab9532de761f94c4) --- valid-palindrome/Yiseull.java | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 valid-palindrome/Yiseull.java diff --git a/valid-palindrome/Yiseull.java b/valid-palindrome/Yiseull.java new file mode 100644 index 0000000000..f64e8668e0 --- /dev/null +++ b/valid-palindrome/Yiseull.java @@ -0,0 +1,31 @@ +class Solution { + public boolean isPalindrome(String s) { + /** + 첫 번째 풀이: 시간복잡도 O(n), 공간복잡도 O(n) + String letters = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase(); + String reverse = new StringBuilder(letters).reverse().toString(); + return letters.equals(reverse); + */ + + // 두 번째 풀이: 시간복잡도 O(n), 공간복잡도 O(1) + int left = 0, right = s.length() - 1; + while (left < right) { + while (left < right && !Character.isLetterOrDigit(s.charAt(left))) { + left++; + } + + while (left < right && !Character.isLetterOrDigit(s.charAt(right))) { + right--; + } + + if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) { + return false; + } + + left++; + right--; + } + + return true; + } +} From 3ba4012055f492b34d5317354f6b727cbbeda181 Mon Sep 17 00:00:00 2001 From: Yiseul Park Date: Wed, 8 Jul 2026 22:44:46 +0900 Subject: [PATCH 2/7] feat: 191. Number of 1 Bits solution --- number-of-1-bits/Yiseull.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 number-of-1-bits/Yiseull.java diff --git a/number-of-1-bits/Yiseull.java b/number-of-1-bits/Yiseull.java new file mode 100644 index 0000000000..921cc140e5 --- /dev/null +++ b/number-of-1-bits/Yiseull.java @@ -0,0 +1,5 @@ +class Solution { + public int hammingWeight(int n) { + return Integer.bitCount(n); + } +} From 60d523505682e3322b8fcc55c587207826f940d5 Mon Sep 17 00:00:00 2001 From: Yiseul Park Date: Sat, 11 Jul 2026 18:44:24 +0900 Subject: [PATCH 3/7] feat: 39. Combination Sum solution --- combination-sum/Yiseull.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 combination-sum/Yiseull.java diff --git a/combination-sum/Yiseull.java b/combination-sum/Yiseull.java new file mode 100644 index 0000000000..6af0681838 --- /dev/null +++ b/combination-sum/Yiseull.java @@ -0,0 +1,27 @@ +class Solution { + + private List> answer = new ArrayList<>(); + + public List> combinationSum(int[] candidates, int target) { + Arrays.sort(candidates); + dfs(candidates, target, 0, new ArrayList<>()); + return answer; + } + + private void dfs(int[] candidates, int target, int start, List combination) { + if (target == 0) { + answer.add(new ArrayList<>(combination)); + return; + } + + for (int i = start; i < candidates.length; i++) { + if (candidates[i] > target) { + break; + } + + combination.add(candidates[i]); + dfs(candidates, target - candidates[i], i, combination); + combination.removeLast(); + } + } +} From f42b34d31bc9f9855269dfee251e5cb99ec7f41c Mon Sep 17 00:00:00 2001 From: Yiseul Park Date: Sat, 11 Jul 2026 18:48:36 +0900 Subject: [PATCH 4/7] feat: 191. Number of 1 Bits solution2 --- number-of-1-bits/Yiseull.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/number-of-1-bits/Yiseull.java b/number-of-1-bits/Yiseull.java index 921cc140e5..87486a7e12 100644 --- a/number-of-1-bits/Yiseull.java +++ b/number-of-1-bits/Yiseull.java @@ -1,5 +1,12 @@ class Solution { public int hammingWeight(int n) { - return Integer.bitCount(n); + // return Integer.bitCount(n); + + int answer = 0; + while (n != 0) { + n &= n-1; + answer++; + } + return answer; } } From 43db120e7ea9b1396052f425200fa5dd0ab8b751 Mon Sep 17 00:00:00 2001 From: Yiseul Park Date: Sat, 11 Jul 2026 20:04:48 +0900 Subject: [PATCH 5/7] feat: 91. Decode Ways solution --- decode-ways/Yiseull.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 decode-ways/Yiseull.java diff --git a/decode-ways/Yiseull.java b/decode-ways/Yiseull.java new file mode 100644 index 0000000000..8c62a0d893 --- /dev/null +++ b/decode-ways/Yiseull.java @@ -0,0 +1,26 @@ +class Solution { + + public int numDecodings(String s) { + if (s.charAt(0) == '0') { + return 0; + } + + int n = s.length(); + int[] dp = new int[n + 1]; + dp[0] = 1; + dp[1] = 1; + + for (int i = 2; i <= n; i++) { + if (s.charAt(i - 1) != '0') { + dp[i] += dp[i - 1]; + } + + int two = Integer.parseInt(s.substring(i - 2, i)); + if (two >= 10 && two <= 26) { + dp[i] += dp[i - 2]; + } + } + + return dp[n]; + } +} From e94363ccd02251336bbb57cf0054de4af2c92ac2 Mon Sep 17 00:00:00 2001 From: Yiseul Park Date: Sat, 11 Jul 2026 20:37:24 +0900 Subject: [PATCH 6/7] feat: 53. Maximum Subarray solution --- maximum-subarray/Yiseull.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 maximum-subarray/Yiseull.java diff --git a/maximum-subarray/Yiseull.java b/maximum-subarray/Yiseull.java new file mode 100644 index 0000000000..25ed7ecd1b --- /dev/null +++ b/maximum-subarray/Yiseull.java @@ -0,0 +1,13 @@ +class Solution { + public int maxSubArray(int[] nums) { + int answer = -10001, tmp = 0; + + for (int i = 0; i < nums.length; i++) { + tmp += nums[i]; + answer = Math.max(answer, tmp); + tmp = Math.max(tmp, 0); + } + + return answer; + } +} From e14750743ece60feb0ec91fa3428cd9126657ee3 Mon Sep 17 00:00:00 2001 From: Yiseul Park Date: Thu, 3 Sep 2026 21:53:48 +0900 Subject: [PATCH 7/7] feat: 56. Merge Intervals solution --- merge-intervals/Yiseull.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 merge-intervals/Yiseull.java diff --git a/merge-intervals/Yiseull.java b/merge-intervals/Yiseull.java new file mode 100644 index 0000000000..95e9869aa6 --- /dev/null +++ b/merge-intervals/Yiseull.java @@ -0,0 +1,16 @@ +class Solution { + public int[][] merge(int[][] intervals) { + Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]); + + int index = 0; + for (int i = 0; i < intervals.length; i++) { + if (intervals[index][1] < intervals[i][0]) { + intervals[++index] = intervals[i]; + } else { + intervals[index][1] = Math.max(intervals[index][1], intervals[i][1]); + } + } + + return Arrays.copyOf(intervals, index + 1); + } +}