๋ฌธ์
https://www.acmicpc.net/problem/2630
๋ฌธ์ ํ์ด
๋ถํ ์ ๋ณต ํ๋ ๋ฌธ์ ์ด๋ค. ์ฌ๊ท๋ก ์ ๊ทผํ์ฌ ์ฝ๊ฒ ํ ์ ์์๋ค.
์ ์ฌ๊ฐํ์ ๋ชจ๋ ์์ข ์ด์ ์์ด ๊ฐ์์ผ ํ๋ฏ๋ก ํฐ ์ฌ๊ฐํ๋ถํฐ ๊ฒ์ฌ๋ฅผ ํ๊ณ ๊ฒ์ฌํ๋ ์์ค์ ์์ข ์ด ์์ด ๋ค๋ฅด๋ฉด 4๋ถํ ํ์ฌ ๋ค์ ๊ฐ ๋ถํ ๋ ์์ญ์์์ ์์ข ์ด ์์ด ๊ฐ์์ง ํ์ธํ๊ณ ๊ฐ์ผ๋ฉด ๋ ์ด์ ๋ถํ ํ์ง ์๊ณ ํด๋น ์์ญ์ ํ์์ ๋๋ธ๋ค.
์ ๊ณผ์ ์ ์ฝ๋๋ก ํ๋ฉด ์๋์ ๊ฐ๋ค.
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
let N = Number(input.shift());
// ์ ์ฌ๊ฐ ํ์ 2์ฐจ์ ๋ฐฐ์ด map์ผ๋ก ๊ตฌํ
let map = [];
for (let i = 0; i < input.length; ++i) {
let line = input[i].split(" ").map((n) => Number(n));
map.push(line);
}
let blue = 0;
let white = 0;
const recursive = (startR, startC, cnt) => {
if (cnt === 1) {
if (map[startR][startC] === 1) {
blue++;
} else {
white++;
}
return;
}
let color = map[startR][startC];
for (let i = startR; i < startR + cnt; ++i) {
for (let j = startC; j < startC + cnt; ++j) {
if (color !== map[i][j]) {
let half = cnt / 2;
recursive(startR, startC, half);
recursive(startR + half, startC, half);
recursive(startR, startC + half, half);
recursive(startR + half, startC + half, half);
return;
}
}
}
if (color === 1) {
++blue;
} else {
++white;
}
};
recursive(0, 0, N);
console.log(`${white}\n${blue}`);
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค[node.js] > 2667๋ฒ ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (1) | 2024.12.22 |
---|---|
๋ฐฑ์ค[node.js] > 2805๋ฒ ๋๋ฌด ์๋ฅด๊ธฐ (1) | 2024.12.21 |
๋ฐฑ์ค[node.js] > 1927๋ฒ ์ต์ ํ (0) | 2024.12.19 |
๋ฐฑ์ค[node.js] > 21736๋ฒ ํ๋ด๊ธฐ๋ ์น๊ตฌ๊ฐ ํ์ํด (0) | 2024.12.17 |
๋ฐฑ์ค[node.js] > 15663๋ฒ N๊ณผ M (9) (0) | 2024.12.16 |