๊ธฐ๋ก๋ฐฉ

BOJ_1926 : ๊ทธ๋ฆผ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1926 : ๊ทธ๋ฆผ

Soom_1n 2023. 3. 5. 19:48

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

1926๋ฒˆ: ๊ทธ๋ฆผ

์–ด๋–ค ํฐ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์žˆ์„ ๋•Œ, ๊ทธ ๊ทธ๋ฆผ์˜ ๊ฐœ์ˆ˜์™€, ๊ทธ ๊ทธ๋ฆผ ์ค‘ ๋„“์ด๊ฐ€ ๊ฐ€์žฅ ๋„“์€ ๊ฒƒ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ. ๋‹จ, ๊ทธ๋ฆผ์ด๋ผ๋Š” ๊ฒƒ์€ 1๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ•œ ๊ทธ๋ฆผ์ด๋ผ๊ณ  ์ •์˜ํ•˜์ž. ๊ฐ€๋กœ๋‚˜ ์„ธ๋กœ

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • n * m ๋„ํ™”์ง€์—์„œ ์—ฐ๊ฒฐ๋œ 1์˜ ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • BFSํ˜น์€ DFS๋กœ ์—ฐ๊ฒฐ๋œ 1์„ ํƒ์ƒ‰ํ•œ๋‹ค.
    • ์—ฐ๊ฒฐ๋œ 1 ๋ฌด๋ฆฌ์˜ ๊ฐœ์ˆ˜์™€ ๊ทธ ์ค‘ ์ตœ๋Œ€๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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

public class Main {
    public static void main(String[] args) throws IOException {
        // input
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        boolean[][] arr = new boolean[n][m];

        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < m; j++) {
                arr[i][j] = Integer.parseInt(st.nextToken()) != 0;
            }
        }

        // bfs
        int cnt = 0, max = 0;
        int[] dx = {-1, 0, 1, 0};
        int[] dy = {0, 1, 0, -1};

        Queue<Pair> que = null;

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (arr[i][j]) {
                    int temp = 0;
                    cnt++;
                    que = new ArrayDeque<>();
                    que.add(new Pair(i,j));
                    arr[i][j] = false;

                    while (!que.isEmpty()) {
                        temp++;
                        Pair pair = que.poll();
                        for (int k = 0; k < 4; k++) {
                            int r = pair.r+dx[k];
                            int c = pair.c+dy[k];

                            if (0<=r&&r<n && 0<=c && c<m&&arr[r][c]){
                                arr[r][c] = false;
                                que.offer(new Pair(r,c));
                            }
                        }
                    }
                    max = Math.max(max, temp);
                }
            }
        }
        System.out.println(cnt);
        System.out.println(max);
    }

    private static class Pair{
        int r, c;

        public Pair(int r, int c) {
            this.r = r;
            this.c = c;
        }
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • n * m ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ฐฐ์—ด arr๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ true๋ฅผ ์ฐพ๋Š”๋‹ค.
    • ๋ฐœ๊ฒฌํ•œ ์ขŒํ‘œ๋ฅผ ํ์— ๋„ฃ๊ณ  BFS๋กœ ์ธ์ ‘ํ•œ 1์„ ๋ชจ๋‘ false๋กœ ๋ฐ”๊พผ๋‹ค.
    • ์ด๋•Œ ๋ฌด๋ฆฌ์˜ ์ˆ˜ cnt๋ฅผ +1ํ•ด์ฃผ๊ณ , ์ธ์ ‘ํ•œ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๋”ฐ๋กœ ์นด์šดํŠธํ•ด์„œ max๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๊ธฐ๋ณธ์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ์—ฌ์„œ ๋ฌด๋ฆฌ์—†์ด ํ’€์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1916 : ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ  (0) 2023.03.08
BOJ_1717 : ์ง‘ํ•ฉ์˜ ํ‘œํ˜„  (0) 2023.03.08
BOJ_3109 : ๋นต์ง‘  (0) 2023.02.22
BOJ_6987 : ์›”๋“œ์ปต  (0) 2023.02.21
BOJ_4963 : ์„ฌ์˜ ๊ฐœ์ˆ˜  (0) 2023.02.21