본문 바로가기

알고리즘 & 자료구조569

쿼드압축 후 개수 세기 package programmers; public class 쿼드압축_후_개수_세기 { // 압축하고자 하는 영역 S // S 내부에 있는 모든 수가 같은 값이라면, S를 해당 수 하나로 압축 // 그렇지 않다면 S를 정확히 4개의 균일한 정사각형 영역으로 쪼갠뒤, 각 정사각형 영역에 대해 같은 방식으로 압축을 시도 // 배열에 최종적으로 남는 0의 개수와 1의 개수 리턴 private static int zero = 0; private static int one = 0; public static int[] solution(int[][] arr) { int len = arr.length; go(0, 0, len, arr); return new int[] {zero, one}; } private stati.. 2023. 2. 18.
소수 찾기 package programmers; import java.util.HashSet; import java.util.Set; public class 소수찾기_1 { public static int solution(String numbers) { Set numberSet = new HashSet(); makeNumber(numberSet, numbers.toCharArray(), new boolean[numbers.length()], ""); System.out.println(numberSet); int answer = 0; for (Integer num : numberSet) { if (isPrime(num)) { answer++; } } return answer; } private static boole.. 2023. 2. 17.
다리를 지나는 트럭 package programmers; import java.util.LinkedList; import java.util.Queue; public class 다리를지나는트럭 { // 다리 위에 최대 bridge_length 만큼 트럭 올리기 가능 // 다리는 weight 이하의 무게 까지 가능 // 트럭이 통과하는 시간은 bridge_length public static int solution(int bridge_length, int weight, int[] truck_weights) { Queue bridge = new LinkedList(); int sum = 0; int time = 0; for (int i = 0; i < truck_weights.length; i++) { while (true) {.. 2023. 2. 16.
2XN 타일링 package programmers; public class Two_X_N_타일링 { //D[i] = 가로 길이갸 i 일때 타일 배치 경우의수 //D[i] = D[i-1] + D[i-2] //D[i] = i-1번째에는 타일 세로 배치만 가능, i-2 번째에는 타일 가로 배치만 가능 private static int[] D; public static int solution(int n) { D = new int[60_001]; D[1] = 1; D[2] = 2; for (int i = 3; i 2023. 2. 15.
2개 이하로 다른 비트 package programmers; import java.util.Arrays; public class 두개이하로다른비트 { // f(x) = x 보다 크고 x와 비트가 1~2개 다른 수 들 중에서 제일 작은수 // 2 = 000...0010 // 3 = 000...0011 // 4 = 000...0100 // 5 = 000...0101 // 6 = 000...0110 // 7 = 000...0111 // 8 = 000...1000 // 9 = 000...1001 // 10 = 000...1010 // 11 = 000...1011 // 12 = 000...1100 // 13 = 000...1101 // 14 = 000...1110 // 15 = 000...1111 // 16 = 000..10000 //.. 2023. 2. 14.
모음 사전 package programmers; public class 모음사전 { // A, E, I, O ,U 로만 만들 수 있는 5글자 이하의 단어 // A, AA, ... , UUUUU // 주어진 단어가 몇번째 단어인지 private static String[] dictionary = {"A", "E", "I", "O", "U"}; private static int ans; public static int solution(String word) { ans = 0; go(word, 0, new StringBuilder()); return ans; } private static void go(String word, int count, StringBuilder sb) { if (count == dictionar.. 2023. 2. 13.