Skip to content

Commit b6d4b80

Browse files
authored
Merge pull request #1998 from AlgorithmWithGod/LiiNi-coder
[20260306] BOJ / G5 / 보물섬 / 이인희
2 parents 6c422f3 + 07972b3 commit b6d4b80

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.*;
6+
7+
public class Main{
8+
private static int N;
9+
private static int M;
10+
private static char[][] Map;
11+
private static final int[][] Drdcs = {
12+
{1,0},{-1,0},{0,1},{0,-1}
13+
};
14+
15+
public static void main(String[] args)throws IOException{
16+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
17+
String[] temp = br.readLine().split(" ");
18+
N = Integer.parseInt(temp[0]);
19+
M = Integer.parseInt(temp[1]);
20+
21+
Map = new char[N][M];
22+
for(int i=0; i<N; i++){
23+
Map[i] = br.readLine().toCharArray();
24+
}
25+
int answer = 0;
26+
for(int r=0; r<N; r++){
27+
for(int c=0; c<M; c++){
28+
if(Map[r][c]=='L'){
29+
answer = Math.max(answer, bfs(r,c));
30+
}
31+
}
32+
}
33+
System.out.println(answer);
34+
}
35+
36+
private static int bfs(int sr,int sc){
37+
boolean[][] visited = new boolean[N][M];
38+
Deque<int[]> q = new ArrayDeque<int[]>();
39+
40+
q.offer(new int[]{sr, sc, 0});
41+
visited[sr][sc] = true;
42+
43+
int maxDist = 0;
44+
45+
while(!q.isEmpty()){
46+
int[] qItem = q.poll();
47+
int r = qItem[0];
48+
int c = qItem[1];
49+
int dist = qItem[2];
50+
maxDist = Math.max(maxDist, dist);
51+
52+
for(int i=0; i<4; i++){
53+
int nr = r + Drdcs[i][0];
54+
int nc = c + Drdcs[i][1];
55+
if(nr<0 || nc<0|| nr>=N || nc>=M)continue;
56+
if(visited[nr][nc])continue;
57+
if(Map[nr][nc]=='W')continue;
58+
59+
visited[nr][nc] = true;
60+
q.offer(new int[]{nr, nc, dist+1});
61+
}
62+
}
63+
64+
return maxDist;
65+
}
66+
}
67+
```

0 commit comments

Comments
 (0)