Seize your moment! ๐Ÿ‘พ

์•ˆ๋…•ํ•˜์„ธ์š”. Eric์ž…๋‹ˆ๋‹ค. ์ œ ๋ธ”๋กœ๊ทธ์— ๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐœ๋ฐœ๊ณต๋ถ€/Algorithm

[Eric's ๋ฐฑ์ค€] 7569๋ฒˆ - ํ† ๋งˆํ†  - Java ๐Ÿ…๐Ÿ…

Eric_ko 2023. 2. 17. 09:25

๋ฌธ์ œ

 

 

ํ’€์ด

 

์ด๋ฒˆ๋ฌธ์ œ๋Š” ๋ฐฉ๊ธˆ์ „์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ

ํ† ๋งˆํ†  7576๋ฒˆ

๋ฌธ์ œ์—์„œ dis ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •์„ ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

์ €๋ฒˆ์—๋Š” class Point ๊ฐ€ 

int x, int y ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค๋ฉด,

์ด๋ฒˆ๋ฌธ์ œ์—์„œ๋Š” ํ•œ์ธต ๋” ์ถ”๊ฐ€ํ•˜์—ฌ

int x, int y, int z ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ฝ”๋“œ๋ฅผ ๋ณด์‹œ์ฃ 

 

์ฝ”๋“œ

์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด

์ด์ „๋ฌธ์ œ ์™€ ํ•˜๋‚˜์˜ ์ฐจ์ด์ ์€

for๋ฌธ์„ ๋Œ๋•Œ 3์ค‘ for๋ฌธ์„ ๋Œ์•„์„œ

์ž…๋ ฅ์„ ๋ฐ›๊ณ ,

๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 3์ค‘ for๋ฌธ์„ ํ†ตํ•ด์„œ

ํ•ด๊ฒฐ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ด์™ธ์—๋Š” ๊ธฐ์กด ๋ฌธ์ œ์™€ ๋™์ผํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

package BaekJoon.step27_๊ทธ๋ž˜ํ”„์™€์ˆœํšŒ.ํ† ๋งˆํ† ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
class Point {
public int x, y,z;
public Point(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
}
class N7569 {
static int[] dx = {-1, 0, 1, 0, 0, 0};
static int[] dy = {0, 1, 0, -1, 0, 0};
static int[] dz = {0, 0, 0, 0, -1, 1};
static int[][][] board, dis;
static int n, m, h;
static Queue<Point> Q = new LinkedList<>(); // ์ „์—ญ์œผ๋กœ ์žก์€ ์ด์œ ๋Š” BFS ๋„ ์‚ฌ์šฉํ•ด์•ผํ•˜์ง€๋งŒ, main ์—์„œ๋„ ์ต์€ ํ† ๋งˆํ† ๋ฅผ ๋„ฃ์–ด์•ผํ•˜๊ธฐ๋•Œ๋ฌธ
public static void bfs() {
while (!Q.isEmpty()) {
Point tmp = Q.poll();
for (int i = 0; i < 6; i++) {
int nx = tmp.x + dx[i];
int ny = tmp.y + dy[i];
int nz = tmp.z + dz[i];
if (nx >= 0 && nx < n && ny >= 0 && ny < m && nz >=0 && nz<h && board[nx][ny][nz] == 0) {
board[nx][ny][nz] = 1;
Q.offer(new Point(nx, ny, nz));
dis[nx][ny][nz] = dis[tmp.x][tmp.y][tmp.z] + 1;
}
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
m = Integer.parseInt(st.nextToken());
n = Integer.parseInt(st.nextToken());
h = Integer.parseInt(st.nextToken());
board = new int[n][m][h];
dis = new int[n][m][h];
for(int k = 0 ; k<h; k++) {
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) {
board[i][j][k] = Integer.parseInt(st.nextToken());
if (board[i][j][k] == 1) Q.offer(new Point(i, j, k)); // ์ต์€ ํ† ๋งˆํ†  ๋„ฃ์–ด๋†“๊ธฐ - 0 ๋ ˆ๋ฒจ
}
}
}
// bfs ๋Œ๊ธฐ
bfs();
boolean flag = true; // ์ต์ง€ ์•Š์€ ํ† ๋งˆํ†  ๊ฒ€์ƒ‰์šฉ
int answer = Integer.MIN_VALUE;
//board ๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ’์ด 0์ธ ๊ฐ’์ด ์žˆ์œผ๋ฉด flag ๋ฅผ false ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
for(int k = 0 ; k<h; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (board[i][j][k] == 0) flag = false;
}
}
}
// flag ๊ฐ’์ด true ์ธ ๊ฒฝ์šฐ์—๋งŒ max ๊ฐ’์„ ๋„์ถœํ•˜๋„๋ก for๋ฌธ์„ ๋ˆ๋‹ค.
if (flag) {
for(int k = 0 ; k<h; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
answer = Math.max(answer, dis[i][j][k]);
}
}
}
System.out.println(answer);
} else System.out.println(-1);
br.close();
}
}
view raw N7569.java hosted with โค by GitHub

Solved.ac ํ”„๋กœํ•„