
각 자릿수가 하나의 노드로 이루어진 두 리스트노드의 합을 리스트노드로 반환하는 문제이다. 두 ListNode를 매개변수로 받는 addTwoNumbers메서드의 틀이 주어진다. Problem : class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { } } 이 때, ListNode의 정의가 다음과 같이 주어진다. public class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; } } 풀이는 ad..

반복없이 가장 긴 문자열의 길이를리스트로 반환하는 문제이다. String을 매개변수로 받는 lengthOfLongestSubstring메서드의 틀이 주어진다. Problem : public class LongestSubstring { public int lengthOfLongestSubstring(String s) { } } 풀이는 lengthOfLongestSubstring 메서드에 작성하면 된다. Solution 1: HashSet을 사용하는 방법 1. 왼쪽/오른쪽 포인터, 최대 길이 값을 담을 int 변수를 초기화 한다. 고유문자를 담을 Set 변수을 초기화한다. 2. 오른쪽 포인터가 문자열 끝에 닿을 때까지 반복할 때, 1) 오른쪽 포인터의 문자가 고유문자Set에 없으면, 추가하고 포인터를 하나 ..

애너그램(철자 순서를 바꾼 말) 관계의 문자열끼리 묶어 리스트로 반환하는 문제이다. String 배열을 매개변수로 받는 groupAnagrams 메서드의 틀이 주어진다. Problem :public class GroupAnagrams { public List groupAnagrams(String[] strs) { } }풀이는 groupAnagrams 메서드에 작성하면 된다. Solution :1. 주어진 문자열 배열로 반복문을 돌며 애너그램 맵에 추가한다. 2. 이 때, 애너그램 맵의 키는 해당 문자열을 정렬한 문자(문자열이 'cat'이라면 키는 ‘act')로 한다. 1) 애너그램 맵에 동일한 키가 없는 경우, 해당 키로 문자열이 담긴 리스트를 삽입한다. 2) 애너그램 맵에 이미 동일한 키가 있는 경우,..

패턴String의 애너그램에 해당하는 시작 index 리스트를 반환하는 문제이다. 두 개의 String을 매개변수로 받는 findAnagrams 메서드의 틀이 주어진다. Problem : public class FindAllAnagramsInAString { public List findAnagrams(String s, String p) { } } 풀이는 findAnagrams 메서드에 작성하면 된다. Solution : 패턴(p)에 해당하는 Ascii값이 1인 int배열을 통해서 푼다. 오른쪽 포인터가 배열 길이 이내인 동안 반복문을 돌며 Sliding Window 방식으로 푼다. 오른쪽 포인터에 해당하는 Ascii가 0보다 크면 패턴이 있는 것이므로, 해당 배열값을 줄이고 포인터와 count를 늘린다..

원점과 가까운 상위 k개의 점을 구하는 문제이다. 2차원 int 배열과 int를 매개변수로 받는 kClosest 메서드의 틀이 주어진다. Problem : public class KClosestPointToOrigin { public int[][] kClosest(int[][] points, int k) { return result; } } 풀이는 kClosest 메서드에 작성하면 된다. Solution : 피타고라스의 정리에 따라 좌표평면에서 두 점 사이의 거리를 구하는 공식은 다음과 같다. 이 때, 두 점 중 하나는 원점이므로, 식은 다음과 같이 간략화 할 수 있다. 본 풀이에서는 거리 순위에 영향을 주지 않으면서 계산을 더욱 간소화 하기 위해 제곱근을 제외하고 비교했다. 앞서 설명한 간소화된 원점과..

필요한 최소한의 회의실 수를 구하는 문제이다. 인스턴스변수 start, end를 가진 Interval 클래스와 Interval 배열을 매개변수로 받는 solve 메서드의 틀이 주어진다. Problem : class Interval { int start; int end; Interval() { start = 0; end = 0; } Interval(int s, int e) { start = s; end = e; } } public class MeetingRoom2 { public int solve(Interval[] intervals) { } } 풀이는 solve에 작성하면 된다. Solution : Interval 객체들이 담긴 intervals 배열을 시작 시간 오름차순으로 정렬한다. 종료 시간 오름차..

Interval을 중복시간 없이 통합하는 문제이다. 인스턴스변수 start, end를 가진 Interval 클래스와 Interval 리스트를 매개변수로 받는 merge 메서드의 틀이 주어진다. Problem : class Interval { int start; int end; Interval() { start = 0; end = 0; } Interval(int s, int e) { start = s; end = e; } } public class MergeInterval { public List merge(List intervals) { } } 풀이는 merge에 작성하면 된다. Solution : Interval 객체들이 담긴 intervals 리스트를 시작 시간 오름차순으로 정렬한다. interval..

각 기온이 보다 높게 갱신되는데 걸리는 일자를 구하는 문제이다. e.g. {50, 51, 48, 47, 53} → {1, 3, 2, 1, 0} ∵ 50 → 51 : 1일 소요 / 51 → 53 : 3일 소요 / … / 53 : 마지막 int배열을 매개변수로 받는 dailyTemperatures 메서드의 틀이 주어진다. Problem : public class DailyTemperature { public int[] dailyTemperatures(int[] temperatures) { } } 풀이는 dailyTemperatures에 작성하면 된다. Solution : 결과 배열을 생성 및 초기화한다. 첫 기온을 Stack에 담는다. temperatures 배열을 순서대로 돌며 지난 기온보다 현재 기온이 ..