const readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on('line', (line) => {
input.push(line.trim());
if (input.length === Number(input[0].split(' ')[0]) + 1) {
rl.close();
}
});
const DIR = [
[-1, -1],
[-1, 0],
[-1, 1],
[0, -1],
[0, 1],
[1, -1],
[1, 0],
[1, 1],
];
rl.on('close', () => {
const [N, K] = input[0].split(' ').map(Number);
const arr = [];
for (let i = 1; i <= N; ++i) {
arr.push(input[i].split(' '));
}
let result = 0;
for (let i = 0; i < N; ++i) {
for (let j = 0; j < N; ++j) {
if (arr[i][j] === '1') continue;
let cnt = 0;
for (let k = 0; k < DIR.length; ++k) {
const nextI = i + DIR[k][0];
const nextJ = j + DIR[k][1];
if (nextI < 0 || nextI >= N) continue;
if (nextJ < 0 || nextJ >= N) continue;
if (arr[nextI][nextJ] === '1') ++cnt;
}
if (cnt === K) ++result;
}
}
console.log(result);
process.exit();
});
어제 어려워서 오늘은 쉬어가는 건가..? 20분도 안 걸려서 풀었다.
비슷한 유형을 만나본 적이 있어서 방향 배열 만들고 반복문을 돌렸다.
3중 반복문을 작성하면서 찝찝했지만 반복 횟수가 많지 않아서 문제가 없었다.
유의할 점은 구름이 있는 칸('1'
)은 깃발을 세울 수 없으니 예외로 두어야 한다는 것이다.
구름톤 챌린지 파이팅입니다 :)