From fcb31f4ae3b7f7c3c9382a033050e66e45add247 Mon Sep 17 00:00:00 2001 From: sonshn Date: Fri, 26 Jun 2026 15:05:04 +0900 Subject: [PATCH 01/11] contains-duplicate solution --- contains-duplicate/sonshn.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 contains-duplicate/sonshn.java diff --git a/contains-duplicate/sonshn.java b/contains-duplicate/sonshn.java new file mode 100644 index 0000000000..ef71d2b966 --- /dev/null +++ b/contains-duplicate/sonshn.java @@ -0,0 +1,16 @@ +/** + * HashSet을 사용하여 배열에 중복된 값이 있는지 확인 + * 시간 복잡도: O(n), 공간 복잡도: O(n) + */ +class Solution { + public boolean containsDuplicate(int[] nums) { + HashSet distinctSet = new HashSet<>(); + + for (int i = 0; i < nums.length; i++) { + if (distinctSet.contains(nums[i])) return true; + distinctSet.add(nums[i]); + } + + return false; + } +} From 6c69e25fccedcc0ac478a819b9e98b3e4f5fd1e1 Mon Sep 17 00:00:00 2001 From: sonshn Date: Fri, 26 Jun 2026 15:12:55 +0900 Subject: [PATCH 02/11] two-sum solution --- two-sum/sonshn.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 two-sum/sonshn.java diff --git a/two-sum/sonshn.java b/two-sum/sonshn.java new file mode 100644 index 0000000000..8e114d6238 --- /dev/null +++ b/two-sum/sonshn.java @@ -0,0 +1,17 @@ +class Solution { + public int[] twoSum(int[] nums, int target) { + int length = nums.length; + + for (int first = 0; first < length - 1; first++) { + for (int second = first + 1; second < length; second++) { + int sum = nums[first] + nums[second]; + + if (sum == target) { + return new int[]{first, second}; + } + } + } + + return new int[0]; + } +} From 9d7e093a97bf6a9e1cb99f824f5b734d26a3ec45 Mon Sep 17 00:00:00 2001 From: sonshn Date: Fri, 26 Jun 2026 16:32:26 +0900 Subject: [PATCH 03/11] top-k-frequent-elements solution --- top-k-frequent-elements/sonshn.java | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 top-k-frequent-elements/sonshn.java diff --git a/top-k-frequent-elements/sonshn.java b/top-k-frequent-elements/sonshn.java new file mode 100644 index 0000000000..59d4b7a93c --- /dev/null +++ b/top-k-frequent-elements/sonshn.java @@ -0,0 +1,29 @@ + +/** + * + * 시간 복잡도: O(n log n) + * 공간 복잡도: O(n) + */ +class Solution { + public int[] topKFrequent(int[] nums, int k) { + + Map counter = new HashMap<>(); + + for (int num : nums) { + counter.put(num, counter.getOrDefault(num, 0) + 1); + } + + List list = new ArrayList<>(counter.keySet()); + + // 빈도수 내림차순 정렬 + list.sort((a, b) -> Integer.compare(counter.get(b), counter.get(a))); + + int[] result = new int[k]; + + for (int i = 0; i < k; i++) { + result[i] = list.get(i); + } + + return result; + } +} From 7766ac3ec5bb27733a4ff41aef17bc12540eacea Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 27 Jun 2026 10:23:02 +0900 Subject: [PATCH 04/11] =?UTF-8?q?top-k-frequent-elements=20=ED=92=80?= =?UTF-8?q?=EC=9D=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- top-k-frequent-elements/sonshn.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/top-k-frequent-elements/sonshn.java b/top-k-frequent-elements/sonshn.java index 59d4b7a93c..8d4e0cbf8e 100644 --- a/top-k-frequent-elements/sonshn.java +++ b/top-k-frequent-elements/sonshn.java @@ -1,5 +1,16 @@ /** + * 풀이 + * 1. 빈도수 계산 + * - HashMap을 사용하여 각 숫자의 등장 횟수를 저장 + * - Key는 숫자, Value는 해당 숫자의 빈도수 + * 2. 고유 숫자 저장 + * - counter.keySet()을 ArrayList로 변환하여 중복 없이 숫자들만 저장 + * 3. 빈도수 기준 내림차순 정렬 + * - list.sort((a, b) -> Integer.compare(counter.get(b), counter.get(a))) + * - HashMap에 저장된 빈도수를 기준으로 많이 등장한 숫자가 앞에 오도록 정렬 + * 4. 상위 k개 반환 + * - 정렬된 리스트의 앞에서부터 k개의 숫자를 result 배열에 담아 반환 * * 시간 복잡도: O(n log n) * 공간 복잡도: O(n) From 32eb8b6144d8e2086650b27e022a97e0dce5c198 Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 27 Jun 2026 10:27:42 +0900 Subject: [PATCH 05/11] longest-consecutive-sequence solution --- longest-consecutive-sequence/sonshn.java | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 longest-consecutive-sequence/sonshn.java diff --git a/longest-consecutive-sequence/sonshn.java b/longest-consecutive-sequence/sonshn.java new file mode 100644 index 0000000000..14cbde3455 --- /dev/null +++ b/longest-consecutive-sequence/sonshn.java @@ -0,0 +1,35 @@ +import java.util.*; + +/** + * Finds the length of the longest consecutive elements sequence in an unsorted array. + * + * 시간 복잡도: O(n log n), 공간 복잡도: O(1) + */ +class Solution { + public int longestConsecutive(int[] nums) { + if (nums == null || nums.length == 0) { + return 0; + } + + Arrays.sort(nums); + + int longest = 0; + int length = 1; + + for (int i = 0; i < nums.length - 1; i++) { + if (nums[i] == nums[i + 1]) { + continue; + } + + if (nums[i] + 1 == nums[i + 1]) { + length++; + } else { + longest = Math.max(longest, length); + length = 1; + } + } + + longest = Math.max(longest, length); + return longest; + } +} From a1e4ddedae3f1d0494a702345e6865ce6f9dbda8 Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 27 Jun 2026 18:34:05 +0900 Subject: [PATCH 06/11] house-robber solution --- house-robber/sonshn.java | 21 +++++++++++++++++++++ longest-consecutive-sequence/sonshn.java | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 house-robber/sonshn.java diff --git a/house-robber/sonshn.java b/house-robber/sonshn.java new file mode 100644 index 0000000000..d967dcd11a --- /dev/null +++ b/house-robber/sonshn.java @@ -0,0 +1,21 @@ +/** + * DFS를 이용한 재귀 풀이 + * + * 시간 복잡도: O(2^n), 공간 복잡도: O(n) + */ +class Solution { + public int rob(int[] nums) { + return dfs(nums, 0); + } + + private int dfs(int[] nums, int start) { + if (start >= nums.length) { + return 0; + } + + return Math.max( + nums[start] + dfs(nums, start + 2), + dfs(nums, start + 1) + ); + } +} diff --git a/longest-consecutive-sequence/sonshn.java b/longest-consecutive-sequence/sonshn.java index 14cbde3455..e224f6ac8e 100644 --- a/longest-consecutive-sequence/sonshn.java +++ b/longest-consecutive-sequence/sonshn.java @@ -1,7 +1,7 @@ import java.util.*; /** - * Finds the length of the longest consecutive elements sequence in an unsorted array. + * 주어진 배열에서 연속된 정수의 가장 긴 길이를 찾는 문제 * * 시간 복잡도: O(n log n), 공간 복잡도: O(1) */ From d460b7343507d1877bfc4d7add929a22842d9682 Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 4 Jul 2026 14:15:52 +0900 Subject: [PATCH 07/11] valid-anagram solution --- valid-anagram/sonshn.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 valid-anagram/sonshn.java diff --git a/valid-anagram/sonshn.java b/valid-anagram/sonshn.java new file mode 100644 index 0000000000..5f9548cf62 --- /dev/null +++ b/valid-anagram/sonshn.java @@ -0,0 +1,19 @@ +import java.util.*; + +/** + * String to char array, sort, and compare + * + * 시간 복잡도: O(nlogn) + * 공간 복잡도: O(n) + */ +class Solution { + public boolean isAnagram(String s, String t) { + char[] sArray = s.toCharArray(); + char[] tArray = t.toCharArray(); + + Arrays.sort(sArray); + Arrays.sort(tArray); + + return Arrays.equals(sArray, tArray); + } +} From 8d1ab216fdb46ae919c16eac13bcd8fc33fc8e6d Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 4 Jul 2026 22:19:38 +0900 Subject: [PATCH 08/11] climbing-stairs solution --- climbing-stairs/sonshn.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 climbing-stairs/sonshn.java diff --git a/climbing-stairs/sonshn.java b/climbing-stairs/sonshn.java new file mode 100644 index 0000000000..f4df8a8c45 --- /dev/null +++ b/climbing-stairs/sonshn.java @@ -0,0 +1,20 @@ +/** + * dp[i] = dp[i - 1] + dp[i - 2] + */ +class Solution { + public int climbStairs(int n) { + if (n <= 2) { + return n; + } + + int[] dp = new int[n + 1]; + dp[1] = 1; + dp[2] = 2; + + for (int i = 3; i <= n; i++) { + dp[i] = dp[i - 1] + dp[i - 2]; + } + + return dp[n]; + } +} From 1422ccd7a7be678e469e7bd9dbd09c96f912da33 Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 11 Jul 2026 12:24:26 +0900 Subject: [PATCH 09/11] valid-palindrome solution --- valid-palindrome/sonshn.java | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 valid-palindrome/sonshn.java diff --git a/valid-palindrome/sonshn.java b/valid-palindrome/sonshn.java new file mode 100644 index 0000000000..f4f98c96c2 --- /dev/null +++ b/valid-palindrome/sonshn.java @@ -0,0 +1,36 @@ +/** + * Palindrome 문자열인지 확인하는 문제 + * + * Java에서 제공하는 Character.isLetterOrDigit() 메서드를 사용하여 알파벳과 숫자인지 확인하고, + * Character.toLowerCase() 메서드를 사용하여 대소문자를 구분하지 않고 비교 + * + * 시간 복잡도: O(n) + * 공간 복잡도: O(1) + */ +class Solution { + public boolean isPalindrome(String s) { + int left = 0; + int 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 aa73ee11735ded46707d7c6b7eeac0b68267f9c0 Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 11 Jul 2026 22:13:51 +0900 Subject: [PATCH 10/11] number of 1 bits solution --- number-of-1-bits/sonshn.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 number-of-1-bits/sonshn.java diff --git a/number-of-1-bits/sonshn.java b/number-of-1-bits/sonshn.java new file mode 100644 index 0000000000..a325611e54 --- /dev/null +++ b/number-of-1-bits/sonshn.java @@ -0,0 +1,19 @@ +/** + * hammingWeight + * 정수 n의 이진수 표현에서 1의 개수를 반환 + * + * 시간 복잡도: O(1) + * 공간 복잡도: O(1) + */ +public class sonshn { + public int hammingWeight(int n) { + int count = 0; + + while (n != 0) { + count += (n & 1); + n >>>= 1; + } + + return count; + } +} \ No newline at end of file From 7ed860a185481a1900fc6fb174a383fdabc9074f Mon Sep 17 00:00:00 2001 From: sonshn Date: Sat, 11 Jul 2026 22:15:22 +0900 Subject: [PATCH 11/11] number of 1 bits solution --- number-of-1-bits/sonshn.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/number-of-1-bits/sonshn.java b/number-of-1-bits/sonshn.java index a325611e54..ee143ec9d4 100644 --- a/number-of-1-bits/sonshn.java +++ b/number-of-1-bits/sonshn.java @@ -16,4 +16,4 @@ public int hammingWeight(int n) { return count; } -} \ No newline at end of file +}