//알고리즘 1. bfs탐색문제 2. 벽을 부수고 이동할때랑 그냥 이동할때가 중복이 될 수 있기 때문에 3차원 방문배열 사용. 3. 끝에 도달할경우 최소값을 찾아주면 됨. 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class 벽부수고이동하기_2206_3차배열 { static int N, M, map[][], Ans = Integer.MAX_VALUE; static int[] dr = { 1, -1, 0, 0 }..
//알고리즘 1. 분할정복 2. 매번 1/4 로 줄어들기 때문에 각 구역을 분할하여 하나씩 처리해야 함. 3. boolean 으로 blue와 white를 각각 체크하여 개수를 더해줌 더보기 package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class 색종이만들기_2630 { static int N, map[][], AnsW, AnsB; public static void main(String[] args) throws NumberFormatException, IOException { Bu..
//알고리즘 1. dp 2. 입력값의 최대가 5000이기 때문에 5000개 이상의 배열을 만들어 계산함. 3. 3의 배수와 5의배수를 확인해야 하기 때문에 0,1,2,4는 아주 큰값으로 먼저 설정하고 6부터 계산함. 더보기 import java.util.Scanner; public class 설탕배달_2839 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] dp = new int[5003]; dp[0] = dp[1] = dp[2] = dp[4] = Integer.MAX_VALUE; dp[3] = dp[5] = 1; for (int i = 6; i < dp.len..