개발자 톡

연습문제 톡 장애물 인식 프로그램

JS

등록일
2024-11-08 11:37:42
조회수
34
작성자
vavoya6324
const fs = require('fs');


const [range, ...input] = fs.readFileSync('input.txt', 'utf8').trim().split('\n');
let box = input.map(v => v.split('').map(Number));


let nextGroup = 2;
const count = [0,0];


function DFS(x, y) {
    box[x][y] = nextGroup;
    count[nextGroup]++;


    if (box[x - 1] && box[x - 1][y] === 1) DFS(x - 1, y);
    if (box[x + 1] && box[x + 1][y] === 1) DFS(x + 1, y);
    if (box[x] && box[x][y + 1] === 1) DFS(x, y + 1);
    if (box[x] && box[x][y - 1] === 1) DFS(x, y - 1);
}


for (let i = 0; i < range; i++) {
    for (let j = 0; j < range; j++) {
        if (box[i][j] === 1) {
            count[nextGroup] = 0;
            DFS(i, j);
            nextGroup++;
        }
    }
}


console.log(nextGroup - 2 + '\n' + count.slice(2).sort((a, b) => a - b).join('\n'));


유니언 파인드 쓰고 싶었는데, 여기서는 좀 아닌 것 같아서 DFS로

#장애물_인식_프로그램

이 카테고리의 톡 더보기