From 7cd50c88d76f4026bb296705392178db6c4a9bee Mon Sep 17 00:00:00 2001 From: gyulim5 Date: Thu, 7 Aug 2025 16:01:24 +0900 Subject: [PATCH 1/6] valid-palindrome solution --- valid-palindrome/ohgyulim.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 valid-palindrome/ohgyulim.java diff --git a/valid-palindrome/ohgyulim.java b/valid-palindrome/ohgyulim.java new file mode 100644 index 000000000..b87322970 --- /dev/null +++ b/valid-palindrome/ohgyulim.java @@ -0,0 +1,21 @@ +class Solution { + public boolean isPalindrome(String s) { + StringBuilder sb = new StringBuilder(); + + for (char ch : s.toCharArray()) { + if (Character.isLetterOrDigit(ch)) { + sb.append(Character.toLowerCase(ch)); + } + } + + for (int i = 0; i < sb.length(); i++) { + int left = i; + int right = sb.length() - i - 1; + + if (left >= right) return true; + if (sb.charAt(left) != sb.charAt(right)) return false; + } + + return true; + } +} \ No newline at end of file From 17666b7043839cd10a4e438390bbf3b198ad0a7c Mon Sep 17 00:00:00 2001 From: gyulim5 Date: Thu, 7 Aug 2025 16:01:40 +0900 Subject: [PATCH 2/6] valid-palindrome solution --- valid-palindrome/ohgyulim.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/valid-palindrome/ohgyulim.java b/valid-palindrome/ohgyulim.java index b87322970..a0f7df2d5 100644 --- a/valid-palindrome/ohgyulim.java +++ b/valid-palindrome/ohgyulim.java @@ -1,4 +1,9 @@ class Solution { + /* 시간 복잡도: O(N) + * - for 루프: O(N) + * + * 공간 복잡도: O(N), StringBuilder + */ public boolean isPalindrome(String s) { StringBuilder sb = new StringBuilder(); @@ -18,4 +23,4 @@ public boolean isPalindrome(String s) { return true; } -} \ No newline at end of file +} From 06eceddc762372174bd2f6f48d89ed1152e4d134 Mon Sep 17 00:00:00 2001 From: gyulim5 Date: Thu, 7 Aug 2025 16:05:04 +0900 Subject: [PATCH 3/6] number-of-1-bits solution --- number-of-1-bits/ohgyulim.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 number-of-1-bits/ohgyulim.java diff --git a/number-of-1-bits/ohgyulim.java b/number-of-1-bits/ohgyulim.java new file mode 100644 index 000000000..bede470aa --- /dev/null +++ b/number-of-1-bits/ohgyulim.java @@ -0,0 +1,10 @@ +class Solution { + /* 시간 복잡도: O(1) + * + * 공간 복잡도: O(1) + */ + public int hammingWeight(int n) { + return Integer.bitCount(n); + } +} + From e03134f0b1fa46b30077ed88aa46dc555e93b1fa Mon Sep 17 00:00:00 2001 From: gyulim5 Date: Thu, 7 Aug 2025 16:42:13 +0900 Subject: [PATCH 4/6] combination-sum solution --- combination-sum/ohgyulim.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 combination-sum/ohgyulim.java diff --git a/combination-sum/ohgyulim.java b/combination-sum/ohgyulim.java new file mode 100644 index 000000000..426528d7a --- /dev/null +++ b/combination-sum/ohgyulim.java @@ -0,0 +1,25 @@ +import java.util.*; + +class Solution { + List> answer = new ArrayList<>(); + public List> combinationSum(int[] candidates, int target) { + Arrays.sort(candidates); + recur(new ArrayList(), candidates, target, 0, 0); + return answer; + } + + public void recur(List result, int[] candidates, int target, int sum, int index) { + if (sum == target) { + List deepCopyRes = new ArrayList<>(result); + answer.add(deepCopyRes); + return; + } + for (int i = index; i < candidates.length; i++) { + if (sum + candidates[i] <= target) { + result.add(candidates[i]); + recur(result, candidates, target, sum + candidates[i], i); + result.remove(Integer.valueOf(candidates[i])); + } + } + } +} From 81cb39f2745c18f84847da1d7c83e4c5c5554ee7 Mon Sep 17 00:00:00 2001 From: gyulim5 Date: Thu, 7 Aug 2025 17:03:26 +0900 Subject: [PATCH 5/6] decode-ways solution --- decode-ways/ohgyulim.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 decode-ways/ohgyulim.java diff --git a/decode-ways/ohgyulim.java b/decode-ways/ohgyulim.java new file mode 100644 index 000000000..7cacbf63b --- /dev/null +++ b/decode-ways/ohgyulim.java @@ -0,0 +1,26 @@ +class Solution { + /* 시간 복잡도: O(N) + * - for 루프: O(N) + * 공간 복잡도: O(N), dp배열 + */ + public int numDecodings(String s) { + if (s.charAt(0) == '0') return 0; + int[] dp = new int[s.length() + 1]; + dp[0] = 1; + dp[1] = 1; + + for (int i = 2; i <= s.length(); i++) { + int one = Integer.parseInt(s.substring(i - 1, i)); + int two = Integer.parseInt(s.substring(i - 2, i)); + + if (one > 0) { + dp[i] += dp[i - 1]; + } + if (two >= 10 && two <= 26) { + dp[i] += dp[i - 2]; + } + } + return dp[s.length()]; + } +} + From 94d7e5e08e959a8859da4ab1854f754497714ebe Mon Sep 17 00:00:00 2001 From: gyulim5 Date: Fri, 8 Aug 2025 10:06:41 +0900 Subject: [PATCH 6/6] maximum-subarray solution --- maximum-subarray/ohgyulim.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 maximum-subarray/ohgyulim.java diff --git a/maximum-subarray/ohgyulim.java b/maximum-subarray/ohgyulim.java new file mode 100644 index 000000000..bacce767c --- /dev/null +++ b/maximum-subarray/ohgyulim.java @@ -0,0 +1,17 @@ +class Solution { + /* 시간 복잡도: O(N) + * - for 루프: O(N) + * 공간 복잡도: O(N), dp배열 + */ + public int maxSubArray(int[] nums) { + int[] dp = new int[nums.length]; + dp[0] = nums[0]; + + int answer = nums[0]; + for (int i = 1; i < nums.length; i++) { + dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]); + answer = Math.max(answer, dp[i]); + } + return answer; + } +}