말랑한 하루
[BAEKJOON] 2589 보물섬 (Java) 본문
반응형
[ 개요 ]
모든 육지를 시작으로, 다른 육지까지 갈 수 있는 거리 중 가장 큰 최대거리를 뽑아주면 된다.
[ 학습 내용 ]
※ 클래스 선언 (클래스 중복선언을 피하고자, 문제번호를 추가하였음)
class Pair {
int y;
int x;
public Pair (int y, int x) {
this.y = y;
this.x = x;
}
}
[ 소스 코드 ]
import java.io.*;
import java.util.*;
class Pair_2589 {
int y;
int x;
public Pair_2589(int y, int x) {
this.y = y;
this.x = x;
}
}
class Data_2589 {
Pair_2589 yx;
int cnt;
public Data_2589(Pair_2589 yx, int cnt) {
this.yx = yx;
this.cnt = cnt;
}
}
public class 보물섬_2589 {
public static final int MAX = 51;
public static int H, W;
public static char map[][] = new char[MAX][MAX];
public static Queue<Pair_2589> land = new LinkedList<>();
public static void init() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
H = Integer.parseInt(st.nextToken());
W = Integer.parseInt(st.nextToken());
for (int i = 0; i < H; i++) {
map[i] = br.readLine().toCharArray();
for (int j = 0; j < W; j++) {
if (map[i][j] == 'L') land.add(new Pair_2589(i, j));
}
}
}
public static int dy[] = { -1, 1, 0, 0 };
public static int dx[] = { 0, 0, -1, 1 };
public static int treasureIsland() {
int high = -1;
while (!land.isEmpty()) {
Queue<Data_2589> island = new LinkedList<>();
Pair_2589 point = land.poll();
island.add(new Data_2589(point, 0));
boolean check[][] = new boolean[H][W];
for (boolean item[] : check) {
Arrays.fill(item, false);
}
check[point.y][point.x] = true;
while (!island.isEmpty()) {
Data_2589 out = island.poll();
high = high > out.cnt ? high : out.cnt;
for (int i = 0; i < 4; i++) {
int ny = out.yx.y + dy[i];
int nx = out.yx.x + dx[i];
int nc = out.cnt + 1;
if (!range(ny, nx) && !check[ny][nx] && map[ny][nx] == 'L') {
check[ny][nx] = true;
island.add(new Data_2589(new Pair_2589(ny, nx), nc));
}
}
}
}
return high;
}
public static boolean range(int y, int x) {
return y < 0 || x < 0 || y > H - 1 || x > W - 1;
}
public static void main(String[] args) throws IOException {
init();
System.out.println(treasureIsland());
}
}
반응형
'문제풀이 > BAEKJOON Online Judge' 카테고리의 다른 글
[BAEKJOON] 1157 단어공부 (Java) (0) | 2022.10.29 |
---|---|
[BAEKJOON] 1427 소트인사이드 (Python) (0) | 2022.10.29 |
[BAEKJOON] 1181 단어 정렬 (Python) (0) | 2022.10.29 |
[BAEKJOON] 14502 연구소 (Java) (0) | 2021.03.26 |
[BAEKJOON] 9376 탈옥 (Java) (0) | 2021.03.26 |
Comments