문제 문제 풀이 먼저 문제에서 원하는 2차원 배열의 모양을 만들어야 한다. 해당 모양은 아래와 같다. 안에 있는 값들은 column과 row 값에서 더 큰 값이 들어가는 것이다. 이렇게 만들어진 배열을 1차원 배열로 다시 바꾸어 보자 보기 쉽게 2차원 배열였을 때의 row와 column값을 같이 입력 해두었다. 이렇게 만들어진 배열을 보고 원하는 인덱스에 있을 때의 값에 대한 규칙을 찾으면 아래와 같다. row = index / n
문제 문제풀이 String 문자로 주어진 값을 하나씩 카운팅하여서 빈도수가 높은 순으로 다시 정렬을 하여 int[] 값으로 반환하면 되는 문제이다. 나의 답안 public static int[] solution(String s) { Map map = new HashMap(); String[] split = s.split("[},{]"); for (String str : split) { if ("".equals(str)) continue; map.put(str, map.getOrDefault(str, 0) + 1); } ArrayList list = new ArrayList(map.keySet()); list.sort(((o1, o2) -> map.get(o2) - map.get(o1))); return ..
분할정복(Divide and Conquer) 분할정복(Divide and Conquer)은 컴퓨터 알고리즘디자인 패러다임 중 하나로, 주어진 문제를 작은 부분 문제들로 분할하고, 각 부분 문제를 해결하여 전체 문제를 해결하는 알고리즘이다. 각 부분 문제의 해결 과정이 서로 영향을 미치지 않아야 하며, 이를 "서로 disjoint"하다고 한다. 분할정복 알고리즘은 일반적으로 아래와 같은 세 단계로 구성이 된다. 분할(Divide) : 해결하고자 하는 문제를 작은 부분 문제들로 분할한다. 이 단계에서는 주로 문제의 크기를 절반으로 중리거나, 부분 문제들로 분할하는 등의 작업을 수행한다. 정복(Conquer) : 분할된 부분 문제들을 재귀적으로 해결한다. 부분 문제들이 충분히 작아지면, 직접적인 해결이 가능해..
문제 문제 풀이 arr1은 가로로 이동하면서 하나의 값을 arr2는 세로로 이동하면 하나의 값을 가져와서 곱해서 더한 값을 answer 2중 배열에 입력하면 되는 문제이다. 나의 답안 public static int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr2[0].length]; for (int i = 0; i < arr1.length; i++) { for (int j = 0; j < arr2[0].length; j++) { for (int k = 0; k < arr1[0].length; k++) { answer[i][j] += arr1[i][k] * arr2[k][j]; } } } return..
문제 문제 해설 문제를 해설을 얼마나 이해했냐에 따라 난이도가 나뉘는 문제이다. 기존 캐시에 존재하는 값일 경우 + 1 아닌 경우 + 5 이다. 그리고 캐시 맥스 사이즈보다 커지면 제일 처음에 있는 캐시값은 삭제그리고 새로 추가한다. 또한 중복값이 나왔을 때 기존 캐시를 삭제하고 새로 추가해야하는 문제이다. cacheSize) cache.poll(); } return answer; }
문제 문제 풀이 문제에서 주어는 귤의 종류에 따라 수를 카운팅해서 큰순으로 합하다가 k 랑 같거나 커질때 더한 횟수를 반환하면 되는 문제이다. 나의 답안 public static int solution(int k, int[] tangerine) { int answer = 0; int[] countArr = new int[10000001]; for(int orange : tangerine){ countArr[orange]++; } countArr = Arrays.stream(countArr).boxed().sorted((o1, o2) -> o2 - o1).mapToInt(i -> i).toArray(); int sum = 0; for (int count : countArr){ sum += count; an..