From 5deaf57543f858aa92c43176c5ad6b490376ed09 Mon Sep 17 00:00:00 2001 From: danny Date: Sat, 12 Sep 2026 16:56:49 +0900 Subject: [PATCH 1/3] 0100-same-tree. --- same-tree/dahyeong-yun.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 same-tree/dahyeong-yun.java diff --git a/same-tree/dahyeong-yun.java b/same-tree/dahyeong-yun.java new file mode 100644 index 0000000000..5f3774fcf6 --- /dev/null +++ b/same-tree/dahyeong-yun.java @@ -0,0 +1,20 @@ +/** + * TC : O(n) + * - TreeNode의 노드 수 n 만큼 순회하므로 O(n) + * SC : O(n) + * - TreeNode의 노드 높이 h 만큼 콜스택이 쌓이고, 편향 트리의 경우 O(n) 까지 공간이 필요 + */ +class Solution { + public boolean isSameTree(TreeNode p, TreeNode q) { + // p와 q 둘다 null 인가? + if(p == null && q == null) { + return true; + } else if(p == null || q == null) { // 하나만 null 인가 + return false; + } else if(p.val != q.val) { + return false; + } else { + return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); + } + } +} From 7bafef38e129c40fe47859778f9c1a8eb7b72ec1 Mon Sep 17 00:00:00 2001 From: danny Date: Sat, 12 Sep 2026 16:59:17 +0900 Subject: [PATCH 2/3] 0435-non-overlapping-intervals --- non-overlapping-intervals/dahyeong-yun.java | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 non-overlapping-intervals/dahyeong-yun.java diff --git a/non-overlapping-intervals/dahyeong-yun.java b/non-overlapping-intervals/dahyeong-yun.java new file mode 100644 index 0000000000..a82915da15 --- /dev/null +++ b/non-overlapping-intervals/dahyeong-yun.java @@ -0,0 +1,23 @@ +/** + * TC : O(n log n) + * - intervals 배열의 길이 n 을 최초 정렬 하므로 O(n log n) + * - 이후 for loop 는 O(n) + * SC : O(1) + * - 별도 유의미한 공간 할당은 없음 + */ +class Solution { + public int eraseOverlapIntervals(int[][] intervals) { + Arrays.sort(intervals, (a, b) -> Integer.compare(a[1], b[1])); + + int count = 1; + int beforeEnd = intervals[0][1]; + + for (int i = 1; i < intervals.length; i++) { + if (intervals[i][0] >= beforeEnd) { + count++; + beforeEnd = intervals[i][1]; + } + } + return intervals.length - count; + } +} From 3e9d28d94d0934785f2f3368baf164d2d41e7ffa Mon Sep 17 00:00:00 2001 From: danny Date: Sat, 12 Sep 2026 17:11:25 +0900 Subject: [PATCH 3/3] 0019-remove-nth-node-from-end-of-list --- .../dahyeong-yun.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 remove-nth-node-from-end-of-list/dahyeong-yun.java diff --git a/remove-nth-node-from-end-of-list/dahyeong-yun.java b/remove-nth-node-from-end-of-list/dahyeong-yun.java new file mode 100644 index 0000000000..3f06731796 --- /dev/null +++ b/remove-nth-node-from-end-of-list/dahyeong-yun.java @@ -0,0 +1,32 @@ +/** + * TC: O(n) + * - ListNode의 길이 n 만큰 순회하므로 O(n) + * SC: O(n) + * - ListNode의 길이 n 만큼 ArrayList 할당하므로 O(n) + */ +class Solution { + public ListNode removeNthFromEnd(ListNode head, int n) { + List list = new ArrayList<>(); + ListNode cursor = head.next; + list.add(head); + + while (cursor != null) { + list.add(cursor); + cursor = cursor.next; + } + + int sz = list.size(); + int deleteTarget = list.size() - n; + if (deleteTarget < 0) + return null; + + if (deleteTarget - 1 >= 0 && deleteTarget <= sz - 2) { + list.get(deleteTarget - 1).next = list.get(deleteTarget + 1); + } else if(deleteTarget == 0) { + head = head.next; + } else { + list.get(deleteTarget - 1).next = null; + } + return head; + } +}