일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리코쳇로봇
- 카카오2023신입공채
- BFS
- 포트 죽이는법
- 라이엇 API
- 최주호
- 백엔드 스쿨3기
- 조회수중복
- 영속성
- 스프링부트
- 테크잇
- 알고리즘
- 전적 검색
- 올리브영 고객센터
- 자바ORM표준JPA프로그래밍
- 자바
- 엔에첸
- 멋쟁이사자차럼
- 인텔리제이 에러
- 백준
- 김영한
- already use
- 시소 짝꿍
- java
- 더티체킹
- 스프링 입문을 위한 자바 객체 지향의 원리와 이해
- 인프런
- 프로그래머스
- JPA
- DFS
Archives
- Today
- Total
My Blog
[JAVA] 7569번: 토마토 본문
https://www.acmicpc.net/problem/7569
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{
int h;
int n;
int m;
Point(int h, int n, int m){
this.h = h;
this.n = n;
this.m = m;
}
}
public class Main {
static StringTokenizer st;
static int[][][] tomatoBox;
static Queue<Point> queue = new LinkedList<>();
static int H;
static int N;
static int M;
static int[] dm = {-1,1,0,0,0,0};
static int[] dn = {0,0,-1,1,0,0};
static int[] dh = {0,0,0,0,-1,1};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
st = new StringTokenizer(br.readLine());
M = Integer.parseInt(st.nextToken());
N = Integer.parseInt(st.nextToken());
H = Integer.parseInt(st.nextToken());
tomatoBox = new int[H][N][M];
for(int h=0; h<H; h++){
for(int n=0; n<N; n++){
st = new StringTokenizer(br.readLine());
for(int m=0; m<M; m++){
tomatoBox[h][n][m] = Integer.parseInt(st.nextToken());
if(tomatoBox[h][n][m] == 1){
queue.add(new Point(h,n,m));
}
}
}
}
System.out.println(BFS());
}
public static int BFS(){
while(!queue.isEmpty()){
Point data = queue.poll();
int h = data.h;
int n = data.n;
int m = data.m;
for(int i=0; i<6; i++){
int nh = h + dh[i];
int nn = n + dn[i];
int nm = m + dm[i];
if(nm>=0 && nn>=0 && nh>=0 && nm<M && nn<N && nh<H){
if(tomatoBox[nh][nn][nm] == 0){
queue.add(new Point(nh,nn,nm));
tomatoBox[nh][nn][nm] = tomatoBox[h][n][m] + 1;
}
}
}
}
int date = Integer.MIN_VALUE;
for(int h=0; h<H; h++){
for(int n=0; n<N; n++){
for(int m=0; m<M; m++){
if(tomatoBox[h][n][m] == 0){
return -1;
}
date = Math.max(date, tomatoBox[h][n][m]);
}
}
}
if(date == 0){
return 0;
}
return date-1;
}
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA] 1149: RGB거리 (0) | 2023.02.06 |
---|---|
[JAVA] 7576번: 토마토 (0) | 2023.02.04 |
자바 특수문자 split 함수 나누는 법 (0) | 2023.01.17 |
Comments