From 239e8dffcff4207cd7c5dac7cee3207452a0d3d0 Mon Sep 17 00:00:00 2001 From: Jinyeong Seol Date: Tue, 11 Feb 2025 17:18:14 +0900 Subject: [PATCH] =?UTF-8?q?[20250211]=20BOJ=20/=20=EA=B3=A8=EB=93=9C5=20/?= =?UTF-8?q?=20=ED=86=A0=EB=A7=88=ED=86=A0=20/=20=EC=84=A4=EC=A7=84?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5 \355\206\240\353\247\210\355\206\240.md" | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 "Seol-JY/202502/11 BOJ G5 \355\206\240\353\247\210\355\206\240.md" diff --git "a/Seol-JY/202502/11 BOJ G5 \355\206\240\353\247\210\355\206\240.md" "b/Seol-JY/202502/11 BOJ G5 \355\206\240\353\247\210\355\206\240.md" new file mode 100644 index 00000000..51afab2c --- /dev/null +++ "b/Seol-JY/202502/11 BOJ G5 \355\206\240\353\247\210\355\206\240.md" @@ -0,0 +1,76 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; +import java.util.StringTokenizer; + +public class Main { + private static int[] dx = {-1, 1, 0, 0}; + private static int[] dy = {0, 0, -1, 1}; + private static Queue> queue = new LinkedList<>(); + + public static void main(String[] args) throws IOException { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + int M = nextInt(st); + int N = nextInt(st); + int map[][] = new int[N][M]; + + ` boolean start = false; + for (int i = 0; i < N; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < M; j++) { + map[i][j] = nextInt(st); + if (map[i][j] == 1) {queue.add(Arrays.asList(i, j, 0)); } + if (map[i][j] == 0) { + start = true; + } + } + } + + if (!start) { + System.out.println(0); + return; + } + + int answer = 0; + while (!queue.isEmpty()) { + List polled = queue.poll(); + answer = polled.get(2); + + for (int i = 0; i < 4; i++) { + int nx = polled.get(0) + dx[i]; + int ny = polled.get(1) + dy[i]; + + if (nx < 0 || ny < 0 || nx >= N || ny >= M || map[nx][ny] == -1 || map[nx][ny] == 1) { + continue; + } + + map[nx][ny] = 1; + queue.add(Arrays.asList(nx, ny, answer + 1)); + } + } + + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + if (map[i][j] == 0) { + System.out.println(-1); + return; + } + } + } + + System.out.println(answer); + } + + private static int nextInt(StringTokenizer st) { + return Integer.parseInt(st.nextToken()); + } +} +```