본문 바로가기

휴지통665

후보키 package programmers; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class 후보키 { static List candidateKeys; static String[][] table; public static int solution(String[][] relation) { String columns = init(relation); for (int i = 1; i < table[0].length + 1; i++) { go(columns, new HashSet(), i); } return candidateKeys.size(); } private stat.. 2023. 3. 21.
무인도 여행 package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class 무인도_여행 { private static int[] dy = {-1, 0, 1, 0}; private static int[] dx = {0, 1, 0, -1}; public static int[] solution(String[] maps) { char[][] map = init(maps); List ansList = go(map); if (ansList.isEmpty()) { return new int[] {-1};.. 2023. 3. 20.
하노이의 탑 package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class 하노이의_탑 { //한 번에 하나의 원판만 옮길 수 있다. //큰 원판이 작은 원판 위에 있어서는 안된다. private static List ans; public static int[][] solution(int n) { ans = new ArrayList(); go(n, 1, 3, 2); int[][] answer = new int[ans.size()][]; for (int i = 0; i < ans.size(); i++) { answer[i] = ans.get(i); } return answer; } pr.. 2023. 3. 17.
점 찍기 package programmers; public class 점_찍기 { public static long solution(int k, int d) { long answer = 0; for (int x = 0; x 2023. 3. 16.
거리두기 확인하기 package programmers; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class 거리두기_확인하기 { //대기실은 5개이며 각 대기실은 5x5 크기 //응시자 끼리는 맨헤튼 거리가 2이하로 앉지 못한다. //응시자가 앉아있는 자리가 사이가 파티션으로 막혀있을 경우는 허용 //P : 응시자, O : 빈테이블, X : 파티션 //맨해튼 거리 2 // X // X X X // X X P X X // X X X // X //응시자 기준으로 맨해튼거리 주변 모두 탐색 //(p.y,p.x)와 (ny,nx) 사이에 파티션이 있는지 탐색 //파티션 조건 //1. 자리 사이에 파티션이 존재(찾은 P와 직선.. 2023. 3. 15.
가장 큰 정사각형 찾기 package programmers; public class 가장_큰_정사각형_찾기 { //위, 왼쪽대각, 왼쪽의 최솟값 + 1 private static int[] dy = {-1, -1, 0}; private static int[] dx = {0, -1, -1}; public static int solution(int[][] board) { go(board); int ans = find(board); return ans * ans; } private static int find(int[][] board) { int ans = -1; for (int[] nums : board) { for (int j = 0; j < board[0].length; j++) { ans = Math.max(ans, nums.. 2023. 3. 13.