04-10 13:07
Recent Posts
Recent Comments
Tags
- ์คํฝ๋ ํ
- Java
- ์คํฝ์ค๋น
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ์๋ฐ
- ์๋์ด๋ ธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- SQL
- mysql
- ์ด๋ธ์
- JOBํ๊ณ
- Spring
- ํ์ด์
- ์กํ๊ณ
- ICT๋ฉํ ๋ง
- linux
- RaspberryPi
- ํ์ด์๊ณต๋ชจ์
- DATABASE
- ICT
- ํ๋ก๋ณด๋ ธ
- appetizer
- Naver Cloud
- ์จ์ผ๋ํ
- API๋ง์ผํ๋ ์ด์ค
- ํ์ด์ฌ
- python
- DB
- ict๊ณต๋ชจ์
- TSQL
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค BFS 2468 :: ์์ ์์ญ ๋ณธ๋ฌธ


๐ฌ ๋ฌธ์ ์ค๋ช
์ฌ๋๋ฐฉ์ฌ์ฒญ์์๋ ๋ง์ ๋น๊ฐ ๋ด๋ฆฌ๋ ์ฅ๋ง์ฒ ์ ๋๋นํด์ ๋ค์๊ณผ ๊ฐ์ ์ผ์ ๊ณํํ๊ณ ์๋ค. ๋จผ์ ์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๋ฅผ ํ์ ํ๋ค. ๊ทธ ๋ค์์ ๊ทธ ์ง์ญ์ ๋ง์ ๋น๊ฐ ๋ด๋ ธ์ ๋ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ด ์ต๋๋ก ๋ช ๊ฐ๊ฐ ๋ง๋ค์ด ์ง๋ ์ง๋ฅผ ์กฐ์ฌํ๋ ค๊ณ ํ๋ค.
์ด๋, ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ๊ฒ ํ๊ธฐ ์ํ์ฌ, ์ฅ๋ง์ฒ ์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ผ ์ผ์ ํ ๋์ด ์ดํ์ ๋ชจ๋ ์ง์ ์ ๋ฌผ์ ์ ๊ธด๋ค๊ณ ๊ฐ์ ํ๋ค.
์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๋ ํ๊ณผ ์ด์ ํฌ๊ธฐ๊ฐ ๊ฐ๊ฐ N์ธ 2์ฐจ์ ๋ฐฐ์ด ํํ๋ก ์ฃผ์ด์ง๋ฉฐ ๋ฐฐ์ด์ ๊ฐ ์์๋ ํด๋น ์ง์ ์ ๋์ด๋ฅผ ํ์ํ๋ ์์ฐ์์ด๋ค.
์๋ฅผ ๋ค์ด, ๋ค์์ N=5์ธ ์ง์ญ์ ๋์ด ์ ๋ณด์ด๋ค.

์ด์ ์์ ๊ฐ์ ์ง์ญ์ ๋ง์ ๋น๊ฐ ๋ด๋ ค์ ๋์ด๊ฐ 4 ์ดํ์ธ ๋ชจ๋ ์ง์ ์ด ๋ฌผ์ ์ ๊ฒผ๋ค๊ณ ํ์.
์ด ๊ฒฝ์ฐ์ ๋ฌผ์ ์ ๊ธฐ๋ ์ง์ ์ ํ์์ผ๋ก ํ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.

๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ด๋ผ ํจ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์ง์ ๋ค์ด ์, ์๋, ์ค๋ฅธ์ชฝ ํน์ ์ผ์ชฝ์ผ๋ก ์ธ์ ํด ์์ผ๋ฉฐ ๊ทธ ํฌ๊ธฐ๊ฐ ์ต๋์ธ ์์ญ์ ๋งํ๋ค. ์์ ๊ฒฝ์ฐ์์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ 5๊ฐ๊ฐ ๋๋ค(๊ผญ์ง์ ์ผ๋ก๋ง ๋ถ์ด ์๋ ๋ ์ง์ ์ ์ธ์ ํ์ง ์๋๋ค๊ณ ์ทจ๊ธํ๋ค).
๋ํ ์์ ๊ฐ์ ์ง์ญ์์ ๋์ด๊ฐ 6์ดํ์ธ ์ง์ ์ ๋ชจ๋ ์ ๊ธฐ๊ฒ ๋ง๋๋ ๋ง์ ๋น๊ฐ ๋ด๋ฆฌ๋ฉด ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์๋ ๊ทธ๋ฆผ์์์ ๊ฐ์ด ๋ค ๊ฐ๊ฐ ๋จ์ ํ์ธํ ์ ์๋ค.

์ด์ ๊ฐ์ด ์ฅ๋ง์ฒ ์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ผ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ๊ฐ์๋ ๋ค๋ฅด๊ฒ ๋๋ค. ์์ ์์ ๊ฐ์ ์ง์ญ์์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ฅธ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ์กฐ์ฌํด ๋ณด๋ฉด ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ๊ฐ์ ์ค์์ ์ต๋์ธ ๊ฒฝ์ฐ๋ 5์์ ์ ์ ์๋ค.
์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ์ฅ๋ง์ฒ ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์ต๋ ๊ฐ์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ์งธ ์ค์๋ ์ด๋ค ์ง์ญ์ ๋ํ๋ด๋ 2์ฐจ์ ๋ฐฐ์ด์ ํ๊ณผ ์ด์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ N์ด ์ ๋ ฅ๋๋ค.
- N์ 2 ์ด์ 100 ์ดํ์ ์ ์์ด๋ค.
- ๋์งธ ์ค๋ถํฐ N๊ฐ์ ๊ฐ ์ค์๋ 2์ฐจ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ํ๋ถํฐ N๋ฒ์งธ ํ๊น์ง ์์๋๋ก ํ ํ์ฉ ๋์ด ์ ๋ณด๊ฐ ์ ๋ ฅ๋๋ค.
- ๊ฐ ์ค์๋ ๊ฐ ํ์ ์ฒซ ๋ฒ์งธ ์ด๋ถํฐ N๋ฒ์งธ ์ด๊น์ง N๊ฐ์ ๋์ด ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์์ฐ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ ๋ ฅ๋๋ค.
- ๋์ด๋ 1์ด์ 100 ์ดํ์ ์ ์์ด๋ค.
์ถ๋ ฅ
- ์ฒซ์งธ ์ค์ ์ฅ๋ง์ฒ ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์ต๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1)
5
6 8 2 6 2
3 2 3 4 6
6 7 3 3 2
7 2 5 3 6
8 9 5 2 7
์์ ์ถ๋ ฅ 1)
5
์์ ์ ๋ ฅ 2)
7
9 9 9 9 9 9 9
9 2 1 2 1 2 9
9 1 8 7 8 1 9
9 2 7 9 7 2 9
9 1 8 7 8 1 9
9 2 1 2 1 2 9
9 9 9 9 9 9 9
์์ ์ถ๋ ฅ 2)
6
โ
โ
๐ป Main.java
- BFS์ DFS๋ก ํ ์ ์๋ ๋ฌธ์ ! ๋๋ ์ข๋ ์๋๊ฐ ๋น ๋ฅธ BFS๋ก ๋ฌธ์ ๋ฅผ ํ๋๋ก ํ๋ค.
- ์ง์ญ์ ์ขํ๋ฅผ ์ ์ฅํด์ค Point ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค
- ์ง์ญ ์ ๋ณด๋ board์ ์ ์ฅํ๊ณ , ์์ ์ง๋์ ์ ๋ณด๋ safe์ ์ ์ฅํด์คฌ๋ค.
- ์ด๋ safe๊ฐ ์ค๋ณต ๋ฐฉ๋ฌธ์ ๋ง๋๋ก ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ ํ์ํ๋ ์ญํ ์ ํ๋ค.
- 0๋ถํฐ ์ง์ญ์ ์ต๋ ๋์ด๊น์ง ๋น๊ฐ ์์์ฌ ์ ์๋๋ก ์์ํ๊ณ (๋น๊ฐ ์์ฌ์๋ ์๊ธฐ ๋๋ฌธ์ 0ํฌํจ, 0~maxHeight)
- ์ฐจ์ค๋ฅด๋ ๋์ด๋ณด๋ค ๋์ ์ง์ญ์ ์ง๋๊ฐ๋ ๋์ด ์ฐ์ ํ์์ ์งํํด์ฃผ์
/* ๋ฐฑ์ค - 2468 :: ์์ ์์ญ */
import java.util.*;
import java.io.*;
class Point {
public int x, y;
Point (int x, int y){
this.x = x;
this.y = y;
}
}
public class Main {
// ์ํ์ข์ฐ๋ฅผ ์ง๋๊ฐ๋๋ก dx,dy ์ธํ
static int[] dx = {-1, 0, 1, 0};
static int[] dy = {0, 1, 0, -1};
static int[][] board, safe;
static Queue<Point> q = new LinkedList<>();
public static void bfs(int height, int cnt) {
while(!q.isEmpty()) {
Point tmp = q.poll();
for(int i = 0; i < 4; i++) {
int nx = tmp.x + dx[i];
int ny = tmp.y + dy[i];
if(nx >= 0 && nx < board.length && ny >= 0 && ny < board.length // ์์ญ๊ฒ์ฌ
&& board[nx][ny] > height && safe[nx][ny] == 0) { // ๋ฌผ์ด ์ฐจ์ค๋ฅด๋ ๋์ด๋ณด๋ค ๋๊ณ , ๋ฐฉ๋ฌธํ์ ์๋ ์ง์ญ๋ง ๋ฐฉ๋ฌธ
q.offer(new Point(nx, ny));
safe[nx][ny] = cnt;
}
}
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
board = new int[n][n];
int maxHeight = 0;
for(int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j = 0; j < n; j++) {
board[i][j] = Integer.parseInt(st.nextToken());
maxHeight = Math.max(maxHeight, board[i][j]);
}
}
int answer = 0;
for(int i = 0; i < maxHeight; i++) { // ๋ฌผ์ด ์ฐจ์ค๋ฅด๋ ๋์ด
safe = new int[n][n];
int cnt = 1;
for(int j = 0; j < n; j++) { // x์ขํ
for(int k = 0; k < n; k++) { // y์ขํ
if(board[j][k] > i && safe[j][k] == 0) { // ๋ฐฉ๋ฌธํ์ ์ด ์๊ณ , ๋ฌผ์ด ์ฐจ์ค๋ฅด๋ ๋์ด๋ณด๋ค ๋์ ์ง์ ๋ง ๋ฐฉ๋ฌธ
q.offer(new Point(j, k));
bfs(i, cnt);
answer = Math.max(answer, cnt);
cnt++;
}
}
}
}
System.out.println(answer);
br.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ 10709 :: ๊ธฐ์์บ์คํฐ (0) | 2022.06.13 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ 2828 :: ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์ (0) | 2022.06.13 |
[BAEKJOON] ๋ฐฑ์ค ๊ตฌํ 9996 :: ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง (0) | 2022.06.10 |
[BAEKJOON] ๋ฐฑ์ค ๊ตฌํ 1316 :: ๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค (0) | 2022.06.10 |
[BAEKJOON] ๋ฐฑ์ค ํ๋ก์ด๋ ์์ 11404 :: ํ๋ก์ด๋ (0) | 2022.06.09 |