Tags
- greedy
- LV2
- ๊ทธ๋ํ ์ด๋ก
- Java
- SpringBoot
- BFS
- Study
- queue
- Python
- ๋ฐฑํธ๋ํน
- PGM
- ๊ทธ๋ํ ํ์
- ์๋ฃ๊ตฌ์กฐ
- CodingTest
- stack
- ๋ฌธ์์ด
- ์ํ
- dfs
- Dynamic Programming
- ์ ๋ ฌ
- ๊น์ด ์ฐ์ ํ์
- ๋๋น ์ฐ์ ํ์
- DP
- ์ ์๋ก
- sort
- ๊ตฌํ
- ๊ต์ฌ
- BOJ
- Brute Force Algorithm
- ์๋ฎฌ๋ ์ด์
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_7569 : ํ ๋งํ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- H x N x M ํฌ๊ธฐ์ ์ฐฝ๊ณ ์ ์ต๊ฑฐ๋ ๋ ์ต์ ํ ๋งํ ๊ฐ ๋ค์ด์๋ค.
- ์ต์ ํ ๋งํ ๋ ์ํ์ข์ฐ์ ํ์ ๋ ์ต์ ํ ๋งํ ๋ฅผ ๋ค์ ๋ ์ต๊ฒ ํ๋ค.
- ๋น ์นธ๋ ์๋ค.
- ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต์ ๋ ๊น์ง ์ต์ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋์ง ์ถ๋ ฅํ๋ค.
- ๋ชจ๋ ์ต์ง ๋ชปํ๋ฉด -1์ ์ถ๋ ฅํ๋ค.
- BFS๋ฅผ ํตํด ์ต์ ํ ๋งํ ์ ๋ ์ต์ ํ ๋งํ ๋ค์ด ๋ชจ๋ ์ต์ ๋ ๊น์ง ๊ฑธ๋ฆฌ๋ ๋ ์ ๊ณ์ฐํ๋ค.
- ํ์์ ๋ฐฉ๊ธ ์ต์ ํ ๋งํ ์ ์ขํ๋ฅผ ๊บผ๋ธ๋ค.
- ๊บผ๋ธ ํ ๋งํ ์ฃผ๋ณ์ ๋ ์ต์ ํ ๋งํ ์ ๊ฐ์ ํ์ฌ ๊ฐ+1 ๋ก ๋ฐ๊พธ๊ณ , ์ขํ๋ฅผ ํ์ ๋ฃ๋๋ค.
- ํ๊ฐ ๋น ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
- ํ ๋งํ ์ฐฝ๊ณ ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ถ๋ ฅํ๋ค.
- 0์ด ์์ผ๋ฉด -1์ ๋ฐํํ๋ค. (๋ชจ๋ ์ต์ ์ ์์)
๐ธ ์ฝ๋ ๐ธ
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// input
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int h = sc.nextInt();
int[][][] arr = new int[h][n][m];
Queue<Tomato> que = new LinkedList<>();
for (int i = 0; i < h; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < m; k++) {
arr[i][j][k] = sc.nextInt();
if (arr[i][j][k] == 1)
que.add(new Tomato(j, k, i));
}
}
}
// BFS
// ์ ์ฐ ํ ์ข ์ ํ
int[] dx = {-1, 0, 1, 0, 0, 0};
int[] dy = {0, 1, 0, -1, 0, 0};
int[] dz = {0, 0, 0, 0, 1, -1};
while(!que.isEmpty()) {
Tomato tomato = que.poll();
// System.out.println(tomato.h + " " + tomato.n + " " + tomato.m);
// print(arr);
for (int i = 0; i < dx.length; i++) {
int x = tomato.n + dx[i];
int y = tomato.m + dy[i];
int z = tomato.h + dz[i];
if (0 <= x && x < n &&
0 <= y && y < m &&
0 <= z && z < h &&
arr[z][x][y] == 0) {
arr[z][x][y] = arr[tomato.h][tomato.n][tomato.m] + 1;
que.add(new Tomato(x,y,z));
}
}
}
// print(arr);
System.out.println(tomato(arr));
}
private static int tomato(int[][][] arr) {
int max = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
for (int k = 0; k < arr[i][j].length; k++) {
if (arr[i][j][k] == 0)
return -1;
if (arr[i][j][k] > max)
max = arr[i][j][k];
};
}
}
return max-1;
}
private static class Tomato {
int n, m, h;
public Tomato(int n, int m, int h) {
this.n = n;
this.m = m;
this.h = h;
}
}
private static void print(int[][][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
for (int k = 0; k < arr[i][j].length; k++) {
System.out.print(arr[i][j][k] + " ");
}
System.out.println();
}
System.out.println("\n----------------------------------------\n");
}
System.out.println("\n==========================================\n");
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ฐฝ๊ณ ์ ๋์ด h, ์ธ๋ก ๋๋น n, ๊ฐ๋ก ๋๋น h๋ฅผ ์
๋ ฅ๋ฐ๊ณ ์ฐฝ๊ณ ๋ฐฐ์ด arr์ ๊ฐ์ ์ ์ฅํ๋ค.
- ํ๋ฅผ ๋ง๋ค์ด์ arr์ ๊ฐ์ ๋ฃ์ ๋ 1์ธ ์ขํ๋ฅผ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ฃ์ด์ค๋ค.
- ์ขํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Tomato ํด๋์ค๋ฅผ ๋ง๋ค์ด h, n, m ๊ฐ์ ์์ฑ์ผ๋ก ์ ์ฅํ๋ค.
- BFS๋ฅผ ์ํํ๋ค.
- ์ขํ ์ด๋์ ์ํด ์ ์ขํ์ฐ์ํ ๋ฐฉํฅ์ h,n,m ์ธ๋ฑ์ค ๋ณํ ๋ฐฐ์ด dx, dy, dz๋ฅผ ์ด๊ธฐํ ํ๋ค.
- ํ๊ฐ ๋น ๋๊น์ง ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ํ์์ Tomato ๊ฐ์ฒด๋ฅผ ํ๋ poll() ํ๋ค.
- 6๋ฐฉํฅ์ h, m, n ์ด๋์ ํ์ธํด์ ์ฐฝ๊ณ ๋ฒ์ ๋ด์ด๋ฉฐ ๊ฐ์ด 0์ด๋ฉด ํ์ฌ ๊ฐ+1์ ์ ์ฅํ๊ณ ํด๋น ์ขํ๋ฅผ ํ์ ์ ์ฅํ๋ค.
- arr์ 0์ด ๋จ์์์ผ๋ฉด -1์ ์ถ๋ ฅํ๊ณ , ์๋ค๋ฉด arr์ ์์ ์ค ์ต๋๊ฐ-1์ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ด์ ํ ๋งํ ๋ ํ๋ฅผ 2๊ฐ๋ฅผ ์ฌ์ฉํด ๋ณต์ฌํ๋ฉฐ ํ์ดํ๋๋ฐ, arr์ ๊ฐ์ ๋์ ํ๋ ๋ฐฉ์์ ํ์ด๋ฅผ ๋ณด๊ณ ์ด๋ฒ์ ์ ์ฉํด๋ณด์๋ค.
- BFS์์ ์ฌ์ฉํ๊ธฐ ์์ฃผ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค.
- print๋ฉ์๋๋ ๋ณดํต ์ง์ฐ๋๋ฐ, ์ด๋ฒ์ ์๋ ๊ทธ๋๋ก ์ฌ๋ ธ๋ค.
- ์๊ฐ๋ณด๋ค ๋์์ง ์์ ๊ฒ ๊ฐ์์ ์ฝ๋์ ๋จ๊ฒจ๋๋ ค๊ณ ํ๋ค.
- ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ๋ฅผ ํ์๋๋ ์ ์ ๊ฒ๋ค์ด ๋ง์ง ์์๋ค.
- ๊ณ์ ๊ฐ๋จํ ์ธ ์ ์๋๋ก ์ฐ์ตํ ์๊ฐ์ด๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_7507 : ์ฌ๋ฆผํฝ ๊ฒ์ (0) | 2023.02.07 |
---|---|
BOJ_2630 : ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2023.02.05 |
BOJ_7576 : ํ ๋งํ (0) | 2023.01.30 |
BOJ_11478 : ์๋ก ๋ค๋ฅธ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฐ์ (0) | 2023.01.30 |
BOJ_11053 : ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2023.01.29 |