알고리즘
-
[알고리즘] Longest Substring알고리즘/배열 2021. 4. 21. 11:06
Problem Input : ccaabbb Output : 5 Key Point 새로운 문자가 나오면 기존 것과 비교해서 Max 값을 구한다. (while(counter > 2)) Code public class LongestSubMostDist { public int solution(String s) { int counter = 0, start = 0, length = 0; Map map = new HashMap(); for (int i = 0; i 2) { char st..
-
[알고리즘] Unique Email Addresses알고리즘/배열 2021. 4. 21. 10:59
Problem Key Point String 클래스의 subString(), indexOf() String str = "abcdefg"; str.subString(5); // fg str.subString(2,4) // cd (2포함O, 4포함X) String email = "abc@naver.com"; str.indexOf("@");// 3 Code public class UniqueEmailAddress { public int solution(String[] emails) { Set emailSet = new HashSet(); for (String email : emails) { String localName = getLocalName(email); String domainName = getDoma..
-
[알고리즘] Move Zeroes알고리즘/배열 2021. 4. 20. 11:15
Problem Code public class MoveZeros { public void solve(int[] numbers) { int index = 0; // 01. 0이 아닌 것을 array에 넣는다. for (int i = 0; i < numbers.length; i++) { if (numbers[i] != 0) { numbers[index++] = numbers[i]; } } // 02. index에서 numbers.length에 0을 넣는다. while (index < numbers.length) { numbers[index++] = 0; } System.out.println(Arrays.toString(numbers)); } public static void main(String[] args..
-
[알고리즘] Two Sum알고리즘/배열 2021. 4. 20. 11:07
Problem Key Point target - nums[i]를 Key로 loop의 index를 Value로 Map에 저장한다. 해당 Key값을 만족하는 nums[i] 요소를 찾으면 결과를 리턴한다. Code public class TwoSum { public void solution(int[] nums, int target) { // 01. ds 담을 그릇 int[] result = new int[2]; Map map = new HashMap(); // 02. for for (int i = 0; i < nums.length; i++) { if (map.containsKey(nums[i])) { result[0] = map.get(nums[i]) + 1; result[1] = i + 1; } else {..
-
[알고리즘] Daily temperatures (O)알고리즘/배열 2021. 4. 20. 11:01
Problem Key Point 온도가 높은 index가 나올 때까지 stack에 쌓아놓다가 조건을 만족할 때 stack에서 뽑아서 계산한다. Code public class DailyTemperature { public void solve(int[] nums) { Stack stack = new Stack(); int[] result = new int[nums.length]; for (int i = 0; i < nums.length; i++) { while (!stack.isEmpty() && nums[stack.peek()] < nums[i]) { int index = stack.pop(); result[index] = i - index; } stack.push(i); } System.out.prin..
-
[알고리즘] Merge Intervals (O)알고리즘/배열 2021. 4. 20. 10:50
Problem Key Point 종료 시간보다 큰 시작 시간이 나올 때 까지 before에 시간을 머지한다. Code public class MergeInterval { public List solution(List intervals) { if(intervals.isEmpty()) return intervals; List result = new ArrayList(); Collections.sort(intervals, (o1, o2) -> o1.getStart() - o2.getStart()); // print(intervals); Interval before = intervals.get(0); for (int i = 1; i < intervals.size(); i++) { Interval current ..
-
[알고리즘] Meeting Rooms II알고리즘/배열 2021. 4. 20. 10:34
Problem Key Point Priority Queue 일반적인 큐는 먼저 들어간 데이터가 먼저 나오는 구조이다. 우선순위 큐는 들어간 순서에 상관없이 일정한 규칙에 따라 우선 순위를 선정하고 우선 순위가 가장 높은 데이터가 먼저 나오게 된다. Java는 기본적으로 오름차순이고 내림차순으로 정렬이 필요한 경우 Comparator 클래스나 Comparable 인터페이스를 이용한다. // 종료 시간을 기준으로 오름차순 Queue priorityQueue = new PriorityQueue((o1, o2) -> o1.getEnd() - o2.getEnd())); Code public class MeetingRoom2 { public int solution(Interval[] intervals) { if(i..
-
[알고리즘] Jewels And Stones알고리즘/배열 2021. 4. 20. 10:21
Problem Key Point Set 컬렉션 요소의 저장 순서를 유지하지 않는다. 같은 요소의 중복 저장을 허용하지 않는다. Set charSet = new HashSet(); Code public class JewelsAndStones { public int solution(String jewels, String stones) { int count = 0; Set jset = new HashSet(); for (char jewel : jewels.toCharArray()) { jset.add(jewel); } for (char stone : stones.toCharArray()) { if (jset.contains(stone)) { count++; } } return count; } public st..