diff --git a/merge-intervals/jaejeong1.java b/merge-intervals/jaejeong1.java new file mode 100644 index 000000000..81f1a3394 --- /dev/null +++ b/merge-intervals/jaejeong1.java @@ -0,0 +1,35 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + +class Solution { + + public int[][] merge(int[][] intervals) { + // TC: O(N log N) + // SC: O(N) + + // length가 2보다 적으면 그대로 반환 + if (intervals.length < 2) { + return intervals; + } + + List output = new ArrayList<>(); + + // intervals 배열을 시작 시간 기준으로 정렬 + Arrays.sort(intervals, Comparator.comparingInt(a -> a[0])); + + for (int[] interval : intervals) { + // output이 비어있거나, 현재 interval이 마지막에 추가된 구간과 겹치지 않으면 추가 + if (output.isEmpty() || output.get(output.size() - 1)[1] < interval[0]) { + output.add(interval); + } else { + // 겹치는 경우, 마지막 구간의 끝 시간을 업데이트 + output.get(output.size() - 1)[1] = Math.max(output.get(output.size() - 1)[1], interval[1]); + } + } + + // List를 int[][] 배열로 변환하여 반환 + return output.toArray(new int[output.size()][]); + } +} diff --git a/remove-nth-node-from-end-of-list/jaejeong1.java b/remove-nth-node-from-end-of-list/jaejeong1.java new file mode 100644 index 000000000..3354af836 --- /dev/null +++ b/remove-nth-node-from-end-of-list/jaejeong1.java @@ -0,0 +1,43 @@ +import java.util.LinkedList; + +// Definition for singly-linked list. +class ListNode { + int val; + ListNode next; + ListNode() {} + ListNode(int val) { this.val = val; } + ListNode(int val, ListNode next) { this.val = val; this.next = next; } +} + +class Solution { + + public static void main(String[] args) { + Solution s = new Solution(); + var node = new ListNode(1, new ListNode(2)); + s.removeNthFromEnd(node, 1); + } + + public ListNode removeNthFromEnd(ListNode head, int n) { + // 문제: 링크드리스트의 head가 주어지면 끝에서 N번째 노드를 삭제한 결과를 반환하라 + // 풀이: n번째만큼 first 이동, 그 후 second를 1칸씩 함께 이동 시킨다 first가 끝에 도달할 때 까지 + // 전체 길이 L, 주어진 N이 있을때 이렇게 하면 L - N - 1 위치를 구할 수 있다. + // TC: O(N) + // SC: O(1) + var dummy = new ListNode(-1, head); + var first = head; + for (int i=0; i