01-08 08:57
Recent Posts
Recent Comments
Tags
- Java
- ํ์ด์ฌ
- TSQL
- ์๋ฐ
- ์ด๋ธ์
- RaspberryPi
- DB
- mysql
- ์กํ๊ณ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- SQL
- python
- API๋ง์ผํ๋ ์ด์ค
- ์จ์ผ๋ํ
- appetizer
- ํ์ด์๊ณต๋ชจ์
- DATABASE
- JOBํ๊ณ
- Spring
- ์๋์ด๋ ธ
- ICT๋ฉํ ๋ง
- ์คํฝ๋ ํ
- Naver Cloud
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- linux
- ์คํฝ์ค๋น
- ํ๋ก๋ณด๋ ธ
- ict๊ณต๋ชจ์
- ICT
- ํ์ด์
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค BFS 2589 :: ๋ณด๋ฌผ์ฌ ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
๋ณด๋ฌผ์ฌ ์ง๋๋ฅผ ๋ฐ๊ฒฌํ ํํฌ ์ ์ฅ์ ๋ณด๋ฌผ์ ์ฐพ์๋์ฐ๋ค. ๋ณด๋ฌผ์ฌ ์ง๋๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง์ฌ๊ฐํ ๋ชจ์์ด๋ฉฐ ์ฌ๋ฌ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๊ฐ ์นธ์ ์ก์ง(L)๋ ๋ฐ๋ค(W)๋ก ํ์๋์ด ์๋ค. ์ด ์ง๋์์ ์ด๋์ ์ํ์ข์ฐ๋ก ์ด์ํ ์ก์ง๋ก๋ง ๊ฐ๋ฅํ๋ฉฐ, ํ ์นธ ์ด๋ํ๋๋ฐ ํ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. ๋ณด๋ฌผ์ ์๋ก ๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋๋ฐ ์์ด ๊ฐ์ฅ ๊ธด ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ก์ง ๋ ๊ณณ์ ๋๋์ด ๋ฌปํ์๋ค. ์ก์ง๋ฅผ ๋ํ๋ด๋ ๋ ๊ณณ ์ฌ์ด๋ฅผ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋ ค๋ฉด ๊ฐ์ ๊ณณ์ ๋ ๋ฒ ์ด์ ์ง๋๊ฐ๊ฑฐ๋, ๋ฉ๋ฆฌ ๋์๊ฐ์๋ ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์์ ๊ฐ์ด ์ง๋๊ฐ ์ฃผ์ด์ก๋ค๋ฉด ๋ณด๋ฌผ์ ์๋ ํ์๋ ๋ ๊ณณ์ ๋ฌปํ ์๊ฒ ๋๊ณ , ์ด ๋ ์ฌ์ด์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋ ์๊ฐ์ 8์๊ฐ์ด ๋๋ค.
๋ณด๋ฌผ ์ง๋๊ฐ ์ฃผ์ด์ง ๋, ๋ณด๋ฌผ์ด ๋ฌปํ ์๋ ๋ ๊ณณ ๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋ ์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ์งธ ์ค์๋ ๋ณด๋ฌผ ์ง๋์ ์ธ๋ก์ ํฌ๊ธฐ์ ๊ฐ๋ก์ ํฌ๊ธฐ๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค.
- ์ด์ด L๊ณผ W๋ก ํ์๋ ๋ณด๋ฌผ ์ง๋๊ฐ ์๋์ ์์ ๊ฐ์ด ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ๋ฌธ์ ์ฌ์ด์๋ ๋น ์นธ์ด ์๋ค.
- ๋ณด๋ฌผ ์ง๋์ ๊ฐ๋ก, ์ธ๋ก์ ํฌ๊ธฐ๋ ๊ฐ๊ฐ 50์ดํ์ด๋ค.
์ถ๋ ฅ
- ์ฒซ์งธ ์ค์ ๋ณด๋ฌผ์ด ๋ฌปํ ์๋ ๋ ๊ณณ ์ฌ์ด๋ฅผ ์ต๋จ ๊ฑฐ๋ฆฌ๋ก ์ด๋ํ๋ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1)
5 7
WLLWWWL
LLLWLLL
LWLWLWW
LWLWLLL
WLLWLWW
์์ ์ถ๋ ฅ 1)
8
โ
๐ป Main.java
/* ๋ฐฑ์ค BFS - 2589 :: ๋ณด๋ฌผ์ฌ */
import java.util.*;
import java.io.*;
class Point {
int x;
int y;
int cost;
Point(int x, int y, int cost) {
this.x = x;
this.y = y;
this.cost = cost;
}
}
public class Main{
static char[][] board;
static final int dx[] = {0,0,1,-1}; //์ํ์ข์ฐ ๋ฐฉํฅ ์ค์
static final int dy[] = {1,-1,0,0}; //์ํ์ข์ฐ ๋ฐฉํฅ ์ค์
static int n, m;
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());
// ์ง๋ ์
๋ ฅ ๋ฐ๊ธฐ
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 max = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
if(board[i][j] == 'L')
max = Math.max(max, bfs(i, j));
}
}
System.out.println(max);
}
static int bfs(int x, int y) {
Queue<Point> q = new LinkedList<>();
boolean[][] visited = new boolean[n][m];
q.add(new Point(x, y, 0));
visited[x][y] = true;
int cnt = 1;
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 && ny >= 0 && nx < n && ny < m
&& board[nx][ny] == 'L' && !visited[nx][ny]) {
q.add(new Point(nx, ny, tmp.cost + 1));
visited[nx][ny] = true;
cnt = Math.max(cnt, tmp.cost + 1);
}
}
}
return cnt;
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค BFS 12851 :: ์จ๋ฐ๊ผญ์ง 2 (0) | 2022.07.08 |
---|---|
[BAEKJOON] ๋ฐฑ์ค BFS 2636 :: ์น์ฆ (0) | 2022.06.15 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ 10709 :: ๊ธฐ์์บ์คํฐ (0) | 2022.06.13 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ 2828 :: ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์ (0) | 2022.06.13 |
[BAEKJOON] ๋ฐฑ์ค BFS 2468 :: ์์ ์์ญ (0) | 2022.06.12 |
Comments