알고리즘
-
[알고리즘] Spiral Matrix알고리즘/배열 2021. 6. 12. 16:56
Problem Given a matrix of m x n elements (m rows, n columns) Return all elements of the matrix in spiral order. // input int[][] matrix = new int[][]{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; // output 1 2 3 4 8 12 11 10 9 5 6 7 Code package 배열; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class SpiralMatrix { private int[][] dirs ..
-
[알고리즘] Missing Ranage알고리즘/배열 2021. 6. 12. 16:06
Problem int[] nums = {2, 3, 5, 10, 75}; int lower = 0, upper = 99; Output : [0->1,4,6->49,51-74,76->99] Code import java.util.ArrayList; import java.util.List; public class MissingRange { public List solution(int low, int upper, int[] nums) { List result = new ArrayList(); if(nums == null || nums.length == 0) return result; if (low < nums[0]) { result.add(makeRange(low, nums[0]-1)); } for (int i..
-
[Queue] 더 맵게알고리즘/큐 2021. 6. 5. 19:31
Problem Description 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요..
-
[해시] 완주하지 못한 선수 (JAVA)알고리즘/해시 2021. 4. 30. 11:42
import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; Map participantMap = new HashMap(); for(String p : participant) { participantMap.put(p, participantMap.getOrDefault(p, 0)+1); } for(String c : completion) { if(participantMap.containsKey(c)) { Integer count = participantMap.get(c); participantMap.put(c, count-1); } } for(S..
-
[알고리즘] Find All Anagrams in a String알고리즘/배열 2021. 4. 22. 22:48
Problem Key Point 알파벳은 256 자리 배열로 잡는다. String.charAt() 함수를 호출하면 해당 알파벳의 ascii 코드 값이 들어간다. ascii 코드값에 해당하는 index를 마킹해서 동일한 숫자인지를 판단한다. 두 개의 int 배열이 같은지 비교하는 함수 int[] A = new int[]{1, 2}; int[] B = new int[]{1, 2, 3}; System.out.println("비교 결과 : " + Arrays.equals(A, B)); Code public List solution(String txt, String pat) { List result = new ArrayList(); // pat 값에 대한 ascii 코드 값을 마킹한 배열을 구한다. int[] p..
-
[알고리즘] Find Anagram Mappings알고리즘/배열 2021. 4. 22. 22:47
Problem Key Point B 배열을 Map에 저장한다. (Key는 값이고, Value는 인덱스) A 배열에 대해 루프를 돌면서 값에 해당하는 인덱스를 찾아서 리턴한다. Code public class FindAnagramsMapping { public int[] solution(int[] A, int[] B) { int[] result = new int[A.length]; Map map = new HashMap(); for (int i = 0; i < B.length; i++) { map.put(B[i], i); } for (int i = 0; i < A.length; i++) { result[i] = map.get(A[i]); } return result; } public static void ..
-
[알고리즘] Maximum Subarray알고리즘/배열 2021. 4. 21. 11:30
Problem Key Point 현재 값과 이전까지 더한 합 중 큰 값을 sum으로 설정 sum = Math.max(nums[i], sum + nums[i]); 현재 max값과 sum 중에서 큰 값을 max으로 설정 max = Math.max(max, sum); Code public class MaxSubArray { public int solution(int[] nums) { int sum = nums[0]; int max = nums[0]; for (int i = 1; i < nums.length; i++) { sum = Math.max(nums[i], sum + nums[i]); max = Math.max(max, sum); } return max; } public static void main(S..