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

krkorklo·2022년 3월 1일
0

백준알고리즘

목록 보기
10/27

2667 - 단지번호붙이기

https://www.acmicpc.net/problem/2667

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

let n = Number(input[0]);
let arr = [];
for(var i=1; i<input.length; i++) {
    arr.push((''+input[i]).split(""))
}

let visited = Array.from(Array(n), () => Array(n).fill(false));
let total_cnt = [];

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

console.log(total_cnt.length)
total_cnt.sort((a, b) => a - b).forEach((c) => {
    console.log(c)
})

마지막에 정렬해주라는거 못보고 두번 틀렸다
ㅎㅎㅎㅎㅎ

0개의 댓글