๋ฐฑ์ค€[node.js] > 2667๋ฒˆ ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ

2024. 12. 22. 14:04ยท๐Ÿ”’Algorithm

๋ฌธ์ œ

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

 

ํ’€์ด

์ผ๋‹จ ์ง€๋„๋ฅผ 2์ฐจ์›๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜์‹œ์ผฐ๊ณ  ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋‹จ์ง€๋ณ„๋กœ ์•„ํŒŒํŠธ๋ฅผ ๋ฌถ์—ˆ๋‹ค. 

dfs๋ฅผ ์ด์šฉํ•ด์„œ ํŠน์ • ์•„ํŒŒํŠธ์—์„œ ๊ฐˆ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์•„ํŒŒํŠธ๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ์ง€๋กœ ๋ฌถ์—ˆ๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ๋‹จ์ง€๋‚ด์˜ ์•„ํŒŒํŠธ์˜ ๊ฐฏ์ˆ˜๋ฅผ ํ™•์ธํ–ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ apartment ๋ผ๋Š” array์— ๋‹จ์ง€๋‚ด์˜ ์•„ํŒŒํŠธ ๊ฐฏ์ˆ˜๋ฅผ push ํ•œ๋’ค ๋‹ค์‹œ ์•„ํŒŒํŠธ๊ฐฏ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋ฌธ์ œ์˜ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

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

let N = Number(input.shift());

// ์ง€๋„ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ €์žฅ
let map = [];
// ๋‹จ์ง€๋ณ„ ์ง‘ ์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด
let apartment = [];

input.forEach((str) => {
    let line = str.split("").map((n) => Number(n));
    map.push(line);
});

// ๋‹จ์ง€๋‚ด ์•„ํŒŒํŠธ ๊ฐฏ์ˆ˜ count
let apartmentCnt = 0;

let recursive = (r, c) => {
    // ๋™์„œ๋‚จ๋ถ
    let diffRow = [0, 0, 1, -1];
    let diffCol = [1, -1, 0, 0];

    for (let direction = 0; direction < 4; ++direction) {
        let [nextRow, nextCol] = [r + diffRow[direction], c + diffCol[direction]];

        if (map[nextRow] && map[nextRow][nextCol] && map[nextRow][nextCol] === 1) {
            map[nextRow][nextCol] = 0;
            ++apartmentCnt;
            recursive(nextRow, nextCol);
        }
    }
};

for (let row = 0; row < N; ++row) {
    for (let col = 0; col < N; ++col) {
        if (map[row][col] === 1) {
            apartmentCnt = 1;
            map[row][col] = 0;
            recursive(row, col);
            apartment.push(apartmentCnt);
        }
    }
}

apartment.sort((a, b) => a - b);
console.log(String(apartment.length));
console.log(apartment.join("\n"));

 

ํ›„๊ธฐ

์ž์ฃผ ์ ‘ํ–ˆ๋˜ ๋ฌธ์ œ ์œ ํ˜•์ด๋ผ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฐฑ์ค€[node.js] > 14940๋ฒˆ ์‰ฌ์šด ์ตœ๋‹จ๊ฑฐ๋ฆฌ  (0) 2024.12.30
๋ฐฑ์ค€[node.js] > 10026๋ฒˆ ์ ๋ก์ƒ‰์•ฝ  (0) 2024.12.28
๋ฐฑ์ค€[node.js] > 2805๋ฒˆ ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ  (1) 2024.12.21
๋ฐฑ์ค€[node.js] > 2630๋ฒˆ ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ  (0) 2024.12.20
๋ฐฑ์ค€[node.js] > 1927๋ฒˆ ์ตœ์†Œ ํž™  (0) 2024.12.19
'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€[node.js] > 14940๋ฒˆ ์‰ฌ์šด ์ตœ๋‹จ๊ฑฐ๋ฆฌ
  • ๋ฐฑ์ค€[node.js] > 10026๋ฒˆ ์ ๋ก์ƒ‰์•ฝ
  • ๋ฐฑ์ค€[node.js] > 2805๋ฒˆ ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ
  • ๋ฐฑ์ค€[node.js] > 2630๋ฒˆ ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ
devWarrior
devWarrior
  • devWarrior
    devWarrior
    devWarrior
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐ŸงฉDev (263)
      • โญFE (34)
      • ๐Ÿ”’Algorithm (155)
      • โž•Etc. (11)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
    • ๊ด€๋ฆฌ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    javascript
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    ๊ทธ๋ฆฌ๋””
    react
    ํ”„๋ก ํŠธ์—”๋“œ
    DFS
    dp
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    Lv2
    FE
    ์‹ค๋ฒ„4
    ์‹ค๋ฒ„1
    ์˜ค๋ธ”์™„
    ์‹ค๋ฒ„3
    js
    ๊ตฌํ˜„
    node.js
    Easy
    ์ž์Šค
    nodejs
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐฑ์ค€
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    ๊ณจ๋“œ5
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    Algorithm
    BFS
    leetcode
    ์‹ค๋ฒ„2
    ์ฝ”ํ…Œ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
devWarrior
๋ฐฑ์ค€[node.js] > 2667๋ฒˆ ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”