[백준알고리즘] 알고리즘 연습 - 1012

krkorklo·2022년 3월 1일
0

백준알고리즘

목록 보기
11/27

1012 - 유기농 배추

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let count = Number(input[0]);
let pre = 1;
let total_cnt = [];
for(var c=0; c<count; c++) {
    let [n, m, len] = input[pre++].split(" ").map((n) => Number(n));
    let arr = Array.from(Array(m), () => Array(n).fill(0));
    for(var i=0; i<len; i++) {
        let [y, x] = input[pre++].split(" ").map((n) => Number(n));
        arr[x][y] = 1;
    }
    let visited = Array.from(Array(m), () => Array(n).fill(false));
    let queue = [];
    let cnt = 0;

    for(var i=0; i<m; i++) {
        for(var j=0; j<n; j++) {
            if(visited[i][j] || arr[i][j] == 0) continue;
            queue.push([i, j])
            while(queue.length != 0) {
                let [x, y] = queue.shift();
                if (visited[x][y]) continue;
                visited[x][y] = true;
                if (x != 0 && arr[x-1][y] == 1) {
                    queue.push([x-1, y]);
                } 
                if (x != m - 1 && arr[x+1][y] == 1) {
                    queue.push([x+1, y]);
                } 
                if (y != 0 && arr[x][y-1] == 1) {
                    queue.push([x, y-1]);
                }
                if (y != n - 1 && arr[x][y+1] == 1) {
                    queue.push([x, y+1]);
                }
            }
            cnt++;
        }
    }
    total_cnt.push(cnt);
}

total_cnt.forEach((c) => {
    console.log(c)
})

첫번째 반복문이랑 그 안에있는 반복문 둘다 i로 썼다가 틀렸었다
껄껄

0개의 댓글