Tags
- BOJ
- ์ํ
- ๋ฌธ์์ด
- ๋ฐฑํธ๋ํน
- ์๋ฎฌ๋ ์ด์
- CodingTest
- sort
- Study
- dfs
- Dynamic Programming
- DP
- ๊ตฌํ
- ๋๋น ์ฐ์ ํ์
- ์ ๋ ฌ
- queue
- LV2
- SpringBoot
- ๊ต์ฌ
- ์ ์๋ก
- stack
- PGM
- BFS
- ๊ทธ๋ํ ํ์
- Java
- ๊น์ด ์ฐ์ ํ์
- Brute Force Algorithm
- ์๋ฃ๊ตฌ์กฐ
- greedy
- ๊ทธ๋ํ ์ด๋ก
- Python
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_7576 : ํ ๋งํ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n x m ํฌ๊ธฐ์ ์ฐฝ๊ณ ์ ํ ๋งํ ๊ฐ ๋์ฌ์๋ค.
- 1 : ์ต์ ํ ๋งํ , 0 : ๋ ์ต์ ํ ๋งํ , -1 : ๋น ๊ณต๊ฐ
- ์ต์ ํ ๋งํ ๋ ํ๋ฃจ๊ฐ ์ง๋ ๋ ๋ง๋ค ์ํ์ข์ฐ ๋ ์ต์ ํ ๋งํ ๋ฅผ ์ต๊ฒ ๋ง๋ ๋ค.
- ๋ฉฐ์น ์ด ์ง๋์ผ ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต๋์ง ์ถ๋ ฅํ๋ค. ๋ชจ๋ ์ต์ง ๋ชปํ๋ฉด -1 ์ ์ถ๋ ฅํ๋ค.
- ์ต์ ํ ๋งํ ์ฃผ๋ณ์ ์ต์ ์ ์๋ ํ ๋งํ ๋ฅผ ํ์ ๋ฃ๊ณ BFS์ ์คํํ๋ค.
- ๋ฉฐ์น ์ด ์ง๋๋์ง ํ์ธํด์ผ ํ๋ฏ๋ก ์ต์ ์์ ์ธ ํ ๋งํ ๋ค์ ๊ฐ์ ํ์ ๋ฃ์ง ์๊ณ , ์์ ํ์ ์ ์ฅํ๋ค.
- ์ด๊ธฐ ํ์ ์์๋ฅผ ๋ชจ๋ ๊บผ๋ด๋ฉด ์์ํ๋ฅผ ํ์ธํด ์์๊ฐ ์๋์ง(์์ผ๋ก ์ต์ ํ ๋งํ ๊ฐ ์๋์ง) ํ์ธํ๋ค.
- ์์ ํ์ ์์๋ฅผ ์ด๊ธฐ ํ์ ๋ณต์ฌํ๊ณ , ์์ ํ๋ ๋น์๋ฒ๋ฆฐ๋ค.
- ์์ ํ์ ๊ฐ์ด ์์ ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
- n x m ํฌ๊ธฐ์ ์ฐฝ๊ณ ๋ฅผ ์ํํด ๋์ต์ ํ ๋งํ ๊ฐ ์๋์ง ํ์ธํ๋ค.
- ์์ผ๋ฉด -1์ ์ถ๋ ฅํ๋ค.
- ์์ผ๋ฉด ์ง๋๊ฐ ๋ ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1) input
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int[][] arr = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = sc.nextInt();
}
}
// 2) BFS
int[] dx = {-1, 0, 1, 0};
int[] dy = {0, 1, 0, -1};
int day = 0;
Queue<Pair> que = new LinkedList<>();
Queue<Pair> temp = new LinkedList<>();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (arr[i][j] == 1) {
for (int k = 0; k < 4; k++) {
int x = i + dx[k];
int y = j + dy[k];
if (0 <= x && x < n && 0 <= y && y < m && arr[x][y] == 0) {
temp.add(new Pair(x, y));
}
}
}
}
}
while (!temp.isEmpty()) {
day++;
que = temp;
temp = new LinkedList<>();
while (!que.isEmpty()) {
Pair p = que.poll();
arr[p.x][p.y] = 1;
for (int i = 0; i < 4; i++) {
int x = p.x + dx[i];
int y = p.y + dy[i];
if (0 <= x && x < n && 0 <= y && y < m && arr[x][y] == 0) {
arr[x][y] = 1;
temp.add(new Pair(x, y));
}
}
}
}
boolean flag = false;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (arr[i][j] == 0) {
flag = true;
break;
}
}
}
if (flag)
System.out.println(-1);
else
System.out.println(day);
}
private static class Pair {
int x, y;
public Pair(int x, int y) {
this.x = x;
this.y = y;
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ขํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Pairํด๋์ค๋ฅผ ์ ์ํ๋ค.
- ์
๋ ฅ
- n X m ํฌ๊ธฐ ์ฐฝ๊ณ ์ ํ ๋งํ ์ ๋ณด๋ฅผ 2์ฐจ์ ๋ฐฐ์ด arr์ ์ ์ฅํ๋ค.
- BFS
- 2๊ฐ์ ํ que, temp๋ฅผ ์ ์ธํ๋ค.
- temp์ ์ด๊ธฐ๊ฐ์ ๋ฃ์ด์ฃผ๊ธฐ ์ํด, ๋จผ์ arr๋ฅผ ์ํํ๋ค.
- ๊ฐ์ด 1์ด๋ฉด ์ํ์ข์ฐ๋ฅผ ํ์ธํด ์์ผ๋ก ์ต์ ํ ๋งํ ๊ฐ ์๋์ง ํ์ธํ๋ค.
- ์์ผ๋ก ์ต์ ํ ๋งํ ์ ์ขํ๋ฅผ temp์ ๋ฃ์ด์ค๋ค.
- ํ temp๊ฐ ๋น ๋๊น์ง ๋ค์ ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต์๋ ๊น์ง ํ์ํ ๋ ์ง day ๋ณ์๋ฅผ +1 ํ๋ค.
- que์ temp๋ฅผ ๋ณต์ฌํ๊ณ , temp๋ ์ด๊ธฐํํ๋ค.
- ํ que๊ฐ ๋น ๋๊น์ง ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- que์ ์์๋ฅผ pollํ๋ค.
- ํด๋น ์ขํ์ ๊ฐ์ 1๋ก ๋ณ๊ฒฝํ๋ค. (temp์ ์ด๊ธฐํ ๋๋ฌธ์ด๋ฏ๋ก, day == 1์์๋ง ์คํ ๋จ)
- ์ํ์ข์ฐ 4๋ฐฉํฅ์ ํ์ธํ๋ค.
- ์ํ์ข์ฐ ์ธ๋ฑ์ค๊ฐ ์ฐฝ๊ณ ๋ฒ์ ๋ด์ด๋ฉฐ ๊ฐ์ด 0์ด๋ฉด,
ํด๋น ์ขํ์ ๊ฐ์ 1๋ก ๋ฐ๊พธ๊ณ temp์ Pair๊ฐ์ฒด ์ขํ๋ฅผ ์ถ๊ฐํ๋ค.
- ์ํ์ข์ฐ ์ธ๋ฑ์ค๊ฐ ์ฐฝ๊ณ ๋ฒ์ ๋ด์ด๋ฉฐ ๊ฐ์ด 0์ด๋ฉด,
- ์ถ๋ ฅ
- ์ฐฝ๊ณ arr๋ฅผ ์ํํด ๋์ต์ ํ ๋งํ (0)์ด ๋จ์์๋์ง ํ์ธํ๋ค.
- ๋จ์์์ผ๋ฉด -1, ์์ผ๋ฉด day๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ฐฝ๊ณ arr๋ฅผ ์ํํด ๋์ต์ ํ ๋งํ (0)์ด ๋จ์์๋์ง ํ์ธํ๋ค.
๐ธ end ๐ธ
- ๊ณจ๋ 5 ์น๊ณ ๋ ๋น๊ต์ ์ฌ์ ๋ ๊ฒ ๊ฐ๋ค.
- BFS์ ์ต์ํ๊ณ , ๋ฌธ์ ๋ฅผ ์ด์ ์ ํ ๋ฒ ๋ดค์ด์ ๊ทธ๋ฐ๋ฏ ํ๋ค.
- ์ฒ์ ํ temp์ ๊ฐ์ ์ด๊ธฐํ ํ ๋, BFS์ ์์ชฝ while ์ฒ๋ผ ์ขํPair๊ฐ์ฒด๋ฅผ ๋ฃ์ผ๋ฉด์ ๊ฐ์ 1๋ก ๋ฐ๊ฟจ๋๋ ๋ค์ for๋ฌธ์ ์ํฅ์ด ๊ฐ๋ค.
- ๊ทธ๋์ BFS ์์ชฝ while๋ฌธ์ arr[p.x][p.y] = 1์ด๋ผ๋ ์ฝ๋๋ฅผ ๋ฃ์๋๋ฐ, day๊ฐ 1์ผ๋๋ง ์๋ํ๊ธฐ ๋๋ฌธ์ ์ข ์์ฌ์ ๋ค.
- ๊ทธ๋ ๋ค๊ณ ๊ฐ์ฅ ์์ชฝ if๋ฌธ์์ 1์ ๋ฃ์ด์ฃผ๋๊ฑธ ๋นผ๋ฉด ์ค๋ณต์ด ๋ง์์ง๋ค.
- ๋ฌธ์ ํ์
๋ฐ ์ฝ๋ฉ ์ค๊ณ๋ฅผ ์ ์ด๊ฐ๋ฉฐ ํ์ดํ์ง๋ง, ๋ณ๋ก ๋์์ด ๋์ง ์์ ๊ฒ ๊ฐ์ ์์ฝ๋ค.
- ์์ง ๋ฌธ์ ๋ฅผ ์ ์ด๊ฐ๋ฉฐ ํธ๋๊ฒ ์ต์ํ์ง ์์ ๊ฒ ๊ฐ๋ค.
- ๋ฐ๋ก๋ ๋ง๋ค์ด๋ดค์ผ๋ฉด ์ข์์ํ ๋ฐ ๋ท์ฌ์ด ์ข ๋ถ์กฑํ๋ค.
- ์ง์ ์๋ต์์ ๋ต๋ณ์ ์ ์ด๋ดค๋๋ฐ, ์์ ํ ์ง๋ฌธ์๋ถ ์ฝ๋๊ฐ 2๋ฐฐ ๋ ๋นจ๋๋ค...
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_2630 : ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2023.02.05 |
---|---|
BOJ_7569 : ํ ๋งํ (0) | 2023.02.03 |
BOJ_11478 : ์๋ก ๋ค๋ฅธ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฐ์ (0) | 2023.01.30 |
BOJ_11053 : ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2023.01.29 |
BOJ_2667 : ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2023.01.26 |