01-08 08:57
Recent Posts
Recent Comments
Tags
- appetizer
- ์๋ฐ
- ํ์ด์๊ณต๋ชจ์
- linux
- Spring
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- SQL
- ICT
- mysql
- python
- ICT๋ฉํ ๋ง
- ์คํฝ์ค๋น
- API๋ง์ผํ๋ ์ด์ค
- ์๋์ด๋ ธ
- DATABASE
- ํ์ด์
- JOBํ๊ณ
- ํ๋ก๋ณด๋ ธ
- ict๊ณต๋ชจ์
- Naver Cloud
- TSQL
- Java
- ํ์ด์ฌ
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ์ด๋ธ์
- DB
- ์กํ๊ณ
- RaspberryPi
- ์คํฝ๋ ํ
- ์จ์ผ๋ํ
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค BFS 14497 :: ์ฃผ๋์ ๋ ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
์ฃผ๋์ด๋ ํฌ๊ฒ ํ๊ฐ ๋ฌ๋ค. ์ฑ ์ ์๋ ์์ ๋ชฐ๋ ๋จน์ผ๋ ค๊ณ ์จ๊ฒจ๋ ์ด์ฝ๋ฐ๊ฐ ์ฌ๋ผ์ก๊ธฐ ๋๋ฌธ์ด๋ค. ์ฃผ๋์ด๋ ๋ฏธ์ณ ๋ ๋ฐ๊ธฐ ์์ํ๋ค. ์ฌ์ค, ์ง์ง๋ก ๋ฐ๊ธฐ ์์ํ๋ค.
‘์ฟต... ์ฟต...’
์ฃผ๋์ด๋ ์ ํ์ ํ๋์ผ๋ก ์ฃผ๋ณ์ ๋ชจ๋ ์น๊ตฌ๋ค์ ์ฐ๋ฌ๋จ๋ฆฌ๊ณ (?) ๋๊ตฐ๊ฐ ํ์ณ๊ฐ ์ด์ฝ๋ฐ๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ๋ค. ์ฃผ๋์ด๋ N×Mํฌ๊ธฐ์ ํ๊ต ๊ต์ค ์ด๋๊ฐ์์ ๋ฐ๊ธฐ ์์ํ๋ค. ์ฃผ๋์ด์ ํ๋์ ์ํ์ข์ฐ 4๋ฐฉํฅ์ผ๋ก ์น๊ตฌ๋ค์ ์ฐ๋ฌ๋จ๋ฆด(?) ๋ ๊น์ง ๊ณ์ํด์ ํผ์ ธ๋๊ฐ๋ค. ๋ค๋ฅด๊ฒ ํํํด์, ํ ๋ฒ์ ์ ํ๋ ํ ๊ฒน์ ์น๊ตฌ๋ค์ ์ฐ๋ฌ๋จ๋ฆฐ๋ค. ๋ค์์ ์๋ฅผ ๋ณด์.
์ฃผ๋์ด๋ฅผ ๋ปํ๋ *์ (3, 4)์ ์๊ณ , ์ด์ฝ๋ฐ๋ฅผ ๊ฐ์ง ํ์ #๋ (1, 2)์ ์๋ค. 0์ ์ฅ์ ๋ฌผ์ด ์๋ ๋น ๊ณต๊ฐ์์ ๋ปํ๊ณ , 1์ ์น๊ตฌ๋ค์ด ์์์์ ์๋ฏธํ๋ค. ๋ค์์ ์ฃผ๋์ด์ ์ ํ์ ๋ฐ๋ฅธ ์์กด(?) ํ์๋ค์ ๋ณํ์ด๋ค.
์์ ์์์์ ์ฃผ๋์ด๋ 3๋ฒ์ ์ ํ ๋ง์ ์ด์ฝ๋ฐ๋ฅผ ํ์ณ๊ฐ ๋ฒ์ธ์ ์ฐพ์๋ผ ์ ์๋ค!
์ฃผ๋์ด๋ฅผ ๋นจ๋ฆฌ ๋ฉ์ถฐ์ผ ๊ต์ค์ ์๋ ์ ๋๋ชจํ ์ ์๋ค. ์ฃผ๋์ด์๊ฒ ์ต์ ์ ํ ํ์๋ฅผ ์๋ ค์ค์ ๊ต์ค์ ์งํค์.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ์งธ ์ค์ ์ฃผ๋์ด๊ฐ ์์นํ ๊ต์ค์ ํฌ๊ธฐ N, M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N, M ≤ 300)
- ๋์งธ ์ค์ ์ฃผ๋์ด์ ์์น x1, y1๊ณผ ๋ฒ์ธ์ ์์น x2, y2๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ x1, x2 ≤ N, 1 ≤ y1, y2 ≤ M)
- ์ดํ N×M ํฌ๊ธฐ์ ๊ต์ค ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. 0์ ๋น ๊ณต๊ฐ, 1์ ์น๊ตฌ, *๋ ์ฃผ๋, #๋ ๋ฒ์ธ์ ๋ปํ๋ค.
์ถ๋ ฅ
- ์ฃผ๋์ด๊ฐ ๋ฒ์ธ์ ์ก๊ธฐ ์ํด ์ต์ ๋ช ๋ฒ์ ์ ํ๋ฅผ ํด์ผ ํ๋์ง ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1)
5 7
3 4 1 2
1#10111
1101001
001*111
1101111
0011001
์์ ์ถ๋ ฅ 1)
3
์์ ์ ๋ ฅ 2)
3 5
3 5 1 1
#0000
11111
0000*
์์ ์ถ๋ ฅ 2)
2
โ
์์ ์ ๋ ฅ 3)
3 3
2 2 1 1
#00
0*0
000
์์ ์ถ๋ ฅ 3)
1
โ
๐ Hint
ํ๋์ ํธ์์ ๋จ์ด์ง ๋๋งน์ด์ ๋ฌผ ํ๋์ฒ๋ผ ์ํ์ข์ฐ ๋ค ๋ฐฉํฅ์ผ๋ก ์ฅ์ ๋ฌผ(์น๊ตฌ๋ค)์ ๋ง๋ ๋ ๊น์ง ๊ณ์ํด์ ํผ์ ธ๋๊ฐ๋ค.
์์ ์ฒซ ์ ํ ํ์๋
โ๊ฐ ๋๋ฉฐ, ์ดํ ํ ๋ฒ์ ์ถ๊ฐ ์ ํ๋ฅผ ํตํด ํ๋์ด #์ ๋๋ฌํ์ฌ ๋ฒ์ธ์ ์ก์ ์ ์๋ค.
๐ป Main.java
/* ๋ฐฑ์ค - 14497 :: ์ฃผ๋์ ๋ */
import java.io.*;
import java.util.*;
class Point{
int x;
int y;
int cnt;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
public class Main {
static int[] dx = {-1, 0, 1, 0};
static int[] dy = {0, 1, 0, -1};
static char[][] board;
static int n,m;
public static void bfs(int x, int y, int[][] checked) {
Deque<Point> q = new LinkedList<>();
q.add(new Point(x, y));
checked[x][y] = 1;
while(!q.isEmpty()) {
Point cur = q.poll();
for(int i = 0; i < 4; i++) {
int nx = cur.x + dx[i];
int ny = cur.y + dy[i];
// ์ธ๊ณฝ์ ๊ฒ์ฌ
if(nx >= 0 && nx < n && ny >= 0 && ny < m && checked[nx][ny] == 0) {
if(board[nx][ny] == '1' || board[nx][ny] == '#') {
checked[nx][ny] = checked[cur.x][cur.y] + 1;
q.add(new Point(nx, ny));
}
else if(board[nx][ny] == '0') {
checked[nx][ny] = checked[cur.x][cur.y];
q.addFirst(new Point(nx, ny));
}
}
}
}
}
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
// ์ฃผ๋์ ์์น
int x1 = Integer.parseInt(st.nextToken()) - 1;
int y1 = Integer.parseInt(st.nextToken()) - 1;
// ์ด์ฝ๋ฐ์ ์์น
int x2 = Integer.parseInt(st.nextToken()) - 1;
int y2 = Integer.parseInt(st.nextToken()) - 1;
// ๊ต์ค ์ ๋ณด ์
๋ ฅ
board = new char[n][m];
for(int i = 0; i < n; i++) {
String s = br.readLine();
for(int j = 0; j < m; j++) {
board[i][j] = s.charAt(j);
}
}
// ์ฃผ๋์ด์ ์ ํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
int[][] checked = new int[n][m];
// ์ฃผ๋์ด์ ์์น๋ฅผ ์ค์ฌ์ผ๋ก bfs ์งํ
bfs(x1, y1, checked);
System.out.println(checked[x2][y2] - 1);
br.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๊ตฌํ 14499 :: ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ (0) | 2022.07.15 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 3190 :: ๋ฑ (0) | 2022.07.14 |
[BAEKJOON] ๋ฐฑ์ค BFS 12851 :: ์จ๋ฐ๊ผญ์ง 2 (0) | 2022.07.08 |
[BAEKJOON] ๋ฐฑ์ค BFS 2636 :: ์น์ฆ (0) | 2022.06.15 |
[BAEKJOON] ๋ฐฑ์ค BFS 2589 :: ๋ณด๋ฌผ์ฌ (0) | 2022.06.15 |
Comments