알고리즘/배열
-
[알고리즘] 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..
-
[알고리즘] 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..
-
[알고리즘] 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..