//알고리즘 1. bfs탐색 2. 우선순위큐를 사용하여 값이 제일 작은거부터 탐색 ※ 다익스트라로 풀 수 있음 -> 추후 업로드 예정 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class 녹색옷입은애가젤다지_4485 { static int N, map[][], ans; static PriorityQueue q = new PriorityQueue(); static int[] dr = { -1, 1, 0, 0 }; static int[] dc = { ..
//알고리즘 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..
//알고리즘 1. 시뮬레이션, 단순 구현 2. 3차원 배열을 사용하여 상어의 움직인 후 값들을 다 저장 -> 단순 구현 했더니 통과는 했지만 시간이 생각보다 많이 소모됨. -> 시간을 단축시킬 수 있는 방법을 생각하여 추후에 업로드 예정 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.StringTokenizer; public class 낚시왕_17143 { stati..
//알고리즘 1. 시뮬레이션 문제 2. 모서리에서 부터 단순 계산으로 풀 수 있지만 조건 처리 해야할게 많아서 bfs탐색으로 풀었음. 4. map을 만든 후 가장자리만 -1로 초기화 (bfs탐색 조건으로 쓸 예정) 5. 주어진 조건을 좌표로 바꿔 2로 표시. 6. 나의 좌표는 따로 변수에 저장 7. bfs를 돌려 2로 표시된 부분의 거리 카운트 및 저장 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class 경비원_2564 { static int W, H, K, arr[][], ans, map[][]; static Queue q = new LinkedList(); static int[] dr = ..
//알고리즘 1. bfs탐색 2. 각 구역별 bfs탐색하면서 양의 숫자와 늑대의 숫자를 구함. 3. 조건에 맞춰 양 or 늑대 카운트 증가. 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 양치기꿍_3187 { static int R, C, wolf, sheep, S, W; static char[][] map; static boolean[][] v; static int[] dr = { 1, -1, 0, 0 }; ..
//알고리즘 1. 백트래킹 2. 행, 열, 3x3 을 확인하여 해당자리 에 들어갈 수 있는 숫자 중 가장 적은 숫자부터 넣기 시작함. 3. 값이 첫번째로 다 채워진다면 재귀를 탈출한다(정답이 여러개 나올 수 있음) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class 스도쿠_2239 { static int map[][], copyMap[][]; static boolean flag = true; static boolean[] v = new boolean[10]; public static void main(String[] args..
//알고리즘 1. 시뮬레이션 2. 규칙을 찾아 해결하면 되는 문제 -> 세대별로 규칙이있음 : 이전세대의 방향에 +1을하고 뒤에서부터 추가해주면 됨. -> ex ) 0세대 : 1, 1세대 : 1/ 2 2세대 : 12 / 32 3. 리스트를 사용하여 관리 -> 배열을 사용할 경우 방향값 추가하기가 어려움. 더보기 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class 드래곤커브_15685 { static int K, map[][], ans; static int[] dr = { 0, -1, 0, 1 }; // 오 상 왼 하 static int[] dc = { 1, 0, -1, 0 }; static int..
//알고리즘 1. 재귀 2. 1일, 한달, 3개월동안 최소값 계산하여 저장. 3. 최소값과 1년권의 비용과 비교하여 결과값 도출 -> DP로 푼다면 깔끔하게 풀리는 문제 추후 업로드 예정 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class 수영장 { static int T, cost[], arr[], ans; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new Buffer..