[백준Java]BOJ14716_현수막

Jcy·2022년 5월 11일
0

알고리즘

목록 보기
7/8


(출처 : https://www.acmicpc.net/problem/14716)

내가 생각한 풀이

- 간단한 BFS라고 생각했는데 풀고보니 정말 간단한 BFS였다.. 근데 이제 4방향으로 돌리는게 아니라 8방향으로 돌리는 BFS 였다.
- 방문 2차원 배열을 하나 더 만들까 하다가 원래 지도의 글자가 1이면 방문하면 2로 바꾸는 식으로 했다.
import java.util.Scanner;

public class BOJ14716_현수막 {

	static int n;
	static int m;
	static int[][] arr;
	static int[] dy = {1,1,0,-1,-1,-1,0,1};
	static int[] dx = {0,-1,-1,-1,0,1,1,1};
	
	static void bfs(int y, int x) {
		for(int idx=0;idx<8;idx++) {
			int ny = y + dy[idx];
			int nx = x + dx[idx];
			if(ny>=n || ny<0 || nx>=m || nx<0 || arr[ny][nx]!=1)continue;
			arr[ny][nx]=2;
			bfs(ny,nx);
		}
	}
	
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		m = sc.nextInt();
		arr = new int[n][m];
		int ans = 0;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				arr[i][j] = sc.nextInt();
			}
		}
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				if(arr[i][j] == 1) {
					ans++;
					bfs(i,j);
				}
			}
		}
		System.out.println(ans);
	}
}
profile
꾸준하게라도 써보겠읍니다..

0개의 댓글

관련 채용 정보