본문 바로가기

알고리즘 & 자료구조/프로그래머스132

시소 짝꿍 package programmers; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class 시소_짝꿍 { //시소 중심으로 2,3,4 거리의 지점에 좌석이 있다. //시소를 두 명이 탈 때, 탑승한 사람의 무게와 시소 측과 좌석 간의 거리의 곱이 양쪽이 같다면 시소 짝꿍 // 1:1, 2:1, 3:2, 4:3 public static long solution(int[] weights) { long ans = 0; Map map = new HashMap(); Arrays.sort(weights); for (int w : weights) { ans += getMate(w, map); } return ans; .. 2023. 3. 30.
N Queen package programmers; public class N_Queen { private static int ans; private static int[] map; public static int solution(int n) { ans = 0; map = new int[n]; go(0, n); return ans; } private static void go(int current, int n) { if (current == n) { ans++; return; } for (int i = 0; i < n; i++) { map[current] = i; if (check(current)) { go(current + 1, n); } } } private static boolean check(int i) { f.. 2023. 3. 29.
테이블 해시 함수 package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class 테이블_해시_함수 { public static int solution(int[][] data, int col, int row_begin, int row_end) { sort(data, col); List modResult = getModResult(data, row_begin, row_end); return getXOR(modResult); } //튜플의 col 번째 컬럼의 값을 기준으로 오름차순 정렬을 하되, 값이 동일하면 첫 번째 컬럼의 값을 기준으로 내림차순 정렬 //data[i][j]는 i + 1 번째 .. 2023. 3. 28.
혼자 놀기의 달인 package programmers; import java.util.PriorityQueue; public class 혼자_놀기의_달인 { //2 cards[y] = i : 열려 있는 상자 까지 계속 연다. -> 1번 그룹 //1번 그룹을 제외하고 남는 상자가 없으면 게임 종료 -> 점수 0점 획득 //남은 상자 중 임의의 상자를 골라서 똑같이 그룹을 만듬 //1번 그룹 x ... x n 번 그룹 = 최대 값 구하기 private static boolean[] visited; private static int[] card; private static PriorityQueue pq; public static int solution(int[] cards) { card = cards; visited = new.. 2023. 3. 27.
마법의 엘레베이터 package programmers; public class 마법의_엘레베이터 { //절대값이 10^x 형태의 정수들이 적힌 버튼이 있다.(-1, 1, -10, 10, -100, 100, ...) //현재 층 수에 버튼에 적혀 있는 값을 더한 층으로 이동하게 된다. //엘레베이터가 위치해 있는 층과 버튼의 값을 더한 결과가 0보다 작으면 엘레빙터는 움직이지 않는다. //1. 10^x 을 만드는 최소의 방법 // 1 = 5)) { storey += 10 - n; answer += 10 - n; } else { answer += n; } storey /= 10; } return answer; } public static void main(String[] args) { System.out.println(sol.. 2023. 3. 25.
숫자 카드 나누기 package programmers; import java.util.Arrays; public class 숫자_카드_나누기 { //1. A가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, B가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 수 //2. B가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, A가 가진 카드들에 적힌 모든 숫자를 중 하나도 나눌 수 없는 수 public static int solution(int[] arrayA, int[] arrayB) { int answer = 0; int idx = 0; int max = Math.max(Arrays.stream(arrayA).max().getAsInt(), Arrays.stream(arrayB).max().getAsInt().. 2023. 3. 23.