본문 바로가기

알고리즘/백준

[JAVA]백준_2589_보물섬

문제 : www.acmicpc.net/problem/2589

 

2589번: 보물섬

보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서

www.acmicpc.net

문제 유형 : BFS

 

풀이방식 : 육지인 지점 마다 BFS 탐색하여 최대 LEVEL 측정

 

소스코드

package BOJ;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class BOJ_2589_보물섬_Main {

	private static int result;
	private static int r;
	private static int c;
	private static char[][] map;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		r = Integer.parseInt(st.nextToken());
		c = Integer.parseInt(st.nextToken());
		map = new char[r][c];
		for (int i = 0; i < r; i++) {
			map[i] = br.readLine().toCharArray();
		}
		result = 0;
		for (int i = 0; i < r; i++) {
			for (int j = 0; j < c; j++) {
				if(map[i][j]=='L') {
					bfs(i,j);
				}
			}
		}
		System.out.println(result);
	}

	private static void bfs(int i, int j) {
		Queue<int[]> q = new LinkedList<int[]>();
		q.offer(new int[] {i, j});
		boolean[][] visited = new boolean[r][c];
		int count = 0;
		int[] dr = {0,0,1,-1}, dc = {1,-1,0,0};
		visited[i][j] = true;
		while(!q.isEmpty()) {
			int size = q.size();
			boolean flag = false;
			for (int s = 0; s < size; s++) {
				int[] cur = q.poll();
				for (int d = 0; d < 4; d++) {
					int nr = cur[0] + dr[d];
					int nc = cur[1] + dc[d];
					if(nr>-1&&nc>-1&&nr<r&&nc<c&&!visited[nr][nc]&&map[nr][nc]=='L') {
						flag = true;
						visited[nr][nc] = true;
						q.offer(new int[] {nr,nc});
					}
				}
			}
			if(!flag) break;
			count++;
		}
		if(count>result) result = count;
	}

}

'알고리즘 > 백준' 카테고리의 다른 글

[JAVA]백준_1743_음식물피하기  (0) 2021.01.29
[JAVA]백준_5014_스타트링크  (0) 2021.01.28
[JAVA]백준_5427_불  (0) 2021.01.25
[JAVA]백준_1260_DFS와BFS  (0) 2021.01.24
[JAVA]백준_13335_트럭  (0) 2021.01.20