From c1f6b587dc143903f58c72115f697c963a823a92 Mon Sep 17 00:00:00 2001 From: essaysir Date: Mon, 22 Jun 2026 22:11:17 +0900 Subject: [PATCH 1/5] [essaysir] WEEK 01 Solutions --- contains-duplicate/essaysir.java | 12 ++++++++++++ two-sum/essaysir.java | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 contains-duplicate/essaysir.java create mode 100644 two-sum/essaysir.java diff --git a/contains-duplicate/essaysir.java b/contains-duplicate/essaysir.java new file mode 100644 index 0000000000..02fa34b6dc --- /dev/null +++ b/contains-duplicate/essaysir.java @@ -0,0 +1,12 @@ +import java.util.*; + +class Solution { + public boolean containsDuplicate(int[] nums) { + Set sets = new HashSet<>(); + for ( int i = 0; i < nums.length; i++){ + boolean added = sets.add(nums[i]); + if (!added) return true; + } + return false; + } +} \ No newline at end of file diff --git a/two-sum/essaysir.java b/two-sum/essaysir.java new file mode 100644 index 0000000000..2476360f7e --- /dev/null +++ b/two-sum/essaysir.java @@ -0,0 +1,17 @@ +import java.util.*; + +class Solution { + public int[] twoSum(int[] nums, int target) { + // TWO Sum , 순서는 상관이 없음. NC2 를 계산 필요 + int[] result = new int[2]; + for ( int i = 0; i < nums.length; i++){ + for ( int j = i + 1; j < nums.length; j++){ + if ( target == nums[i] + nums[j]){ + result[0] = i; + result[1] = j; + } + } + } + return result; + } +} \ No newline at end of file From ccafb6714d917bf9f0ef4fd1c67094b24190fb7f Mon Sep 17 00:00:00 2001 From: essaysir Date: Mon, 22 Jun 2026 22:19:05 +0900 Subject: [PATCH 2/5] Add trailing newline to solution files --- contains-duplicate/essaysir.java | 2 +- two-sum/essaysir.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contains-duplicate/essaysir.java b/contains-duplicate/essaysir.java index 02fa34b6dc..bf0aa00b57 100644 --- a/contains-duplicate/essaysir.java +++ b/contains-duplicate/essaysir.java @@ -9,4 +9,4 @@ public boolean containsDuplicate(int[] nums) { } return false; } -} \ No newline at end of file +} diff --git a/two-sum/essaysir.java b/two-sum/essaysir.java index 2476360f7e..3eb19ebda5 100644 --- a/two-sum/essaysir.java +++ b/two-sum/essaysir.java @@ -14,4 +14,4 @@ public int[] twoSum(int[] nums, int target) { } return result; } -} \ No newline at end of file +} From 42edcd01bef776911294bff61c159ca873b763ea Mon Sep 17 00:00:00 2001 From: jsson Date: Thu, 25 Jun 2026 09:20:20 +0900 Subject: [PATCH 3/5] top-k-frequent-elements --- top-k-frequent-elements/essaysir.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 top-k-frequent-elements/essaysir.java diff --git a/top-k-frequent-elements/essaysir.java b/top-k-frequent-elements/essaysir.java new file mode 100644 index 0000000000..856764a4b5 --- /dev/null +++ b/top-k-frequent-elements/essaysir.java @@ -0,0 +1,27 @@ +import java.util.*; + +class Solution { + // TC: O(n log n) + // SC: O(n) + public int[] topKFrequent(int[] nums, int k) { + Map count = new HashMap<>(); + for ( int i = 0; i < nums.length; i++){ + count.put(nums[i], count.getOrDefault(nums[i],0)+ 1); + } + + PriorityQueue heap = new PriorityQueue<>((a,b) -> count.get(a) - count.get(b)); + + for ( int key : count.keySet()){ + heap.offer(key); + if ( heap.size() > k ){ + heap.poll(); + } + } + + int[] result = new int[k]; + for ( int i = 0; i < k; i++){ + result[i] = heap.poll(); + } + return result; + } +} From 60e86baf7575e94450a20ad27bde2ddf80969845 Mon Sep 17 00:00:00 2001 From: jsson Date: Thu, 25 Jun 2026 09:31:22 +0900 Subject: [PATCH 4/5] longest-consecutive-sequence --- longest-consecutive-sequence/essaysir.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 longest-consecutive-sequence/essaysir.java diff --git a/longest-consecutive-sequence/essaysir.java b/longest-consecutive-sequence/essaysir.java new file mode 100644 index 0000000000..e37b1ac54c --- /dev/null +++ b/longest-consecutive-sequence/essaysir.java @@ -0,0 +1,23 @@ +import java.util.*; + +class Solution { + // TC: O(n) + // SC: O(n) + public int longestConsecutive(int[] nums) { + // 연속적인 수의 개수를 구한다. + Arrays.sort(nums); + int maxCount = 0; + int cur = 1; + for ( int i = 1 ; i < nums.length; i ++){ + if (nums[i] == nums[i - 1]) { + continue; // 중복 건너뛰기 + } else if (nums[i - 1] + 1 == nums[i]) { + cur += 1; + } else { + cur = 1; + } + maxCount = Math.max(maxCount, cur); // 매 스텝마다 갱신 + } + return maxCount; + } +} From 37fce5d667aee8eb2b9378b5c470f74086cc213e Mon Sep 17 00:00:00 2001 From: essaysir Date: Fri, 26 Jun 2026 21:10:23 +0900 Subject: [PATCH 5/5] house-robber Co-Authored-By: Claude Opus 4.8 (1M context) --- house-robber/essaysir.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 house-robber/essaysir.java diff --git a/house-robber/essaysir.java b/house-robber/essaysir.java new file mode 100644 index 0000000000..eef41621b1 --- /dev/null +++ b/house-robber/essaysir.java @@ -0,0 +1,15 @@ +class Solution { + public int rob(int[] nums) { + int prev = 0; // dp[i-2]: 두 칸 전까지의 최대 금액 + int curr = 0; // dp[i-1]: 한 칸 전까지의 최대 금액 + + for (int num : nums) { + // 현재 집을 털 경우(prev + num) vs 안 털 경우(curr) 중 큰 값 + int temp = Math.max(curr, prev + num); + prev = curr; + curr = temp; + } + + return curr; + } +}