diff --git "a/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\204\270 \353\262\210 \354\235\264\353\202\264\354\227\220 \354\202\254\352\263\274\353\245\274 \353\250\271\354\236\220/Min.java" "b/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\204\270 \353\262\210 \354\235\264\353\202\264\354\227\220 \354\202\254\352\263\274\353\245\274 \353\250\271\354\236\220/Min.java" new file mode 100644 index 0000000..b55bd30 --- /dev/null +++ "b/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\204\270 \353\262\210 \354\235\264\353\202\264\354\227\220 \354\202\254\352\263\274\353\245\274 \353\250\271\354\236\220/Min.java" @@ -0,0 +1,63 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +class Min { + static int[] dx = {1, -1, 0, 0}; + static int[] dy = {0, 0, 1, -1}; + static boolean[][] visited; + static int[][] arr; + static int answer; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + arr = new int[5][5]; + StringTokenizer str; + for(int i = 0; i < 5; i++) { + str = new StringTokenizer(br.readLine()); + for(int j = 0; j < 5; j++) { + arr[i][j] = Integer.parseInt(str.nextToken()); + } + } + str = new StringTokenizer(br.readLine()); + int a = Integer.parseInt(str.nextToken()); + int b = Integer.parseInt(str.nextToken()); + visited = new boolean[5][5]; + int apple = arr[a][b] == 1 ? 1 : 0; + answer = 0; + visited[a][b] = true; + dfs(a, b, 0, apple); + System.out.println(answer); + } + + private static void dfs(int col, int row, int move, int apple) { + if(apple >= 2) { + answer = 1; + return; + } + if(move == 3) return; + + + for(int i = 0; i < 4; i++) { + int nx = col + dx[i]; + int ny = row + dy[i]; + + if(isValid(nx, ny) && !visited[nx][ny]) { + visited[col][row] = true; + if(arr[nx][ny] == 1) { + dfs(nx, ny, move + 1, apple + 1); + }else if(arr[nx][ny] == 0){ + dfs(nx, ny, move + 1, apple); + } + visited[nx][ny] = false; + } + } + } + + private static boolean isValid(int x, int y) { + if(x >= 0 && x < 5 && y >= 0 && y < 5 && arr[x][y] != -1) { + return true; + } + return false; + } +} \ No newline at end of file diff --git "a/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\212\244\355\224\274\354\271\264/Min.java" "b/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\212\244\355\224\274\354\271\264/Min.java" new file mode 100644 index 0000000..6e2bd0d --- /dev/null +++ "b/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\212\244\355\224\274\354\271\264/Min.java" @@ -0,0 +1,41 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.StringTokenizer; + +public class Min { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + ArrayList> list = new ArrayList<>(); + for(int i = 0; i <= 12; i++) { + list.add(new ArrayList<>()); + } + + for(int i = 0; i < 12; i++) { + StringTokenizer str = new StringTokenizer(br.readLine()); + int a = Integer.parseInt(str.nextToken()); + int b = Integer.parseInt(str.nextToken()); + list.get(a).add(b); + list.get(b).add(a); + } + + for(int i = 1; i <= 12; i++) { + int total = 0; + if(list.get(i).size() == 3) { + int a = list.get(i).get(0); + total += list.get(a).size(); + int b = list.get(i).get(1); + total += list.get(b).size(); + int c = list.get(i).get(2); + total += list.get(c).size(); + + if(total == 6) { + System.out.println(i); + return; + } + + } + } + } +} diff --git "a/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\243\274\353\202\234\354\235\230 \353\202\234/Min.java" "b/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\243\274\353\202\234\354\235\230 \353\202\234/Min.java" new file mode 100644 index 0000000..18aadb1 --- /dev/null +++ "b/12\354\233\224/4\354\243\274\354\260\250/[BOJ] \354\243\274\353\202\234\354\235\230 \353\202\234/Min.java" @@ -0,0 +1,67 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.PriorityQueue; +import java.util.StringTokenizer; + +public class Min { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer str = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(str.nextToken()); + int M = Integer.parseInt(str.nextToken()); + String[][] arr = new String[N][M]; + str = new StringTokenizer(br.readLine()); + int x1 = Integer.parseInt(str.nextToken()) - 1; + int y1 = Integer.parseInt(str.nextToken()) - 1; + int x2 = Integer.parseInt(str.nextToken()) - 1; + int y2 = Integer.parseInt(str.nextToken()) - 1; + + for(int i = 0; i < N; i++) { + arr[i] = br.readLine().split(""); + } + + boolean[][] visited = new boolean[N][M]; + PriorityQueue pq = new PriorityQueue<>((o1, o2) -> o1[2] - o2[2]); + pq.offer(new int[]{x1, y1, 0}); + int[] dx = {1, -1, 0, 0}; + int[] dy = {0, 0, 1, -1}; + + while(!pq.isEmpty()) { + int[] tmp = pq.poll(); + int x = tmp[0]; + int y = tmp[1]; + int cnt = tmp[2]; + + if(visited[x][y]) continue; + visited[x][y] = true; + + if(x == x2 && y == y2) { + System.out.println(cnt); + return; + } + + for(int i = 0; i < 4; i++) { + int nx = x + dx[i]; + int ny = y + dy[i]; + if(!isValid(nx, ny, N, M) || visited[nx][ny]) continue; + + if(nx == x2 && ny == y2) { + System.out.println(cnt + 1); + return; + } + + if (arr[nx][ny].equals("1")) { + pq.offer(new int[]{nx, ny, cnt + 1}); + } else { + pq.offer(new int[]{nx, ny, cnt}); + } + + } + } + } + + private static boolean isValid(int x, int y, int N, int M) { + return x >= 0 && x < N && y >= 0 && y < M; + } +}