728x90
https://www.acmicpc.net/problem/7569
package BKD_0x9_BFS;
import java.beans.Introspector;
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 BOJ_7569 {
static int[] dx ={1,-1,0,0,0,0};
static int[] dy ={0,0,1,-1,0,0};
static int[] dz ={0,0,0,0,1,-1};
static int M;
static int N;
static int H;
static int[][][] box;
static Queue<Tomato> q = new LinkedList<>();
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());
box = new int[H][N][M];
for(int i=0;i<H;i++){
for(int j=0;j<N;j++){
st = new StringTokenizer(br.readLine());
for(int k=0;k<M;k++){
box[i][j][k] = Integer.parseInt(st.nextToken());
if(box[i][j][k]==1) q.offer(new Tomato(j,k,i));
}
}
}
if(checkTomato()==1){
System.out.println(0);
}
bfs();
}
public static void bfs(){
while(!q.isEmpty()){
Tomato t =q.poll();
for(int i=0;i<6;i++){
int nx = t.x + dx[i];
int ny = t.y + dy[i];
int nz = t.z + dz[i];
if(nx>=0 && ny>=0 && nz>=0 && nz<H && nx<N && ny<M && box[nz][nx][ny]==0){
q.offer(new Tomato(nx,ny,nz));
box[nz][nx][ny]=box[t.z][t.x][t.y]+1;
}
}
}
System.out.println(checkTomato());
}
static int checkTomato(){
int result = Integer.MIN_VALUE;
for(int i=0;i<H;i++){
for(int j=0;j<N;j++){
for(int k=0;k<M;k++){
if(box[i][j][k]==0) return -1;
result = Math.max(box[i][j][k],result);
}
}
}
return result-1;
}
static class Tomato{
int x;
int y;
int z;
public Tomato(int x, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
}
}

오늘의 교훈 : 문제를 잘 읽자.
데이터 입력되는 방식 잘못 이해하고 있다가 몇시간을 날린 사람이 여기 있따...
저번에는 토마토의 위치를 저장하는 객체에 day라는 인자를 선언했었는데 이번에는 다른 방법을 접해볼 수 있었다.
이유인 즉슨..
내 입력이 머가 잘못됐지 하고 코드를 찾아보다가 그리 되었따.... 엉엉...
참고 url : https://dragon-h.tistory.com/17
[백준 7569 : JAVA] 토마토 / BFS
개요 이 문제는 아래의 문제에서 배열만 3차원 배열로 변경된 문제이다. 아래 문제를 풀고 이 문제를 접근하면 쉽게 풀이할 수 있을 것이다. 2020/02/09 - [알고리즘/백준] - [백준 7576 : JAVA] 토마토 /
dragon-h.tistory.com
나는 멍청이 트윗트윗트윗트윗...
728x90
'🐣 알고리즘 삐약 > 💻 백준 삐약' 카테고리의 다른 글
64 삐약 : 백준 6593| 상범 빌딩 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.06.04 |
---|---|
63 삐약 : 백준 10026| 적록색약 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.06.03 |
61 삐약 : 백준 7576| 토마토 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.05.31 |
60 삐약 : 백준 2468| 안전 영역 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.05.31 |
59 삐약 : 백준 2667| 단지번호붙이기 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.05.29 |