๐Ÿ”’Algorithm

๋ฐฑ์ค€[JS] > 14719๋ฒˆ ๋น—๋ฌผ

devWarrior 2025. 3. 6. 00:18

๋ฌธ์ œ๋งํฌ

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

๋ฌธ์ œํ’€์ด

์ผ๋‹จ ๋ธ”๋ก์ด ์Œ“์—ฌ์žˆ๋Š” ํ˜•ํƒœ๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งจ์œ„ row๋ถ€ํ„ฐ ๋น—๋ฌผ์ด ์Œ“์ด๋Š” ์กฐ๊ฑด์„ ์ถฉ์กฑ์‹œ ํ•ด๋‹น ๋น—๋ฌผ์„ ์นด์šดํŒ…ํ•˜๋ฉด์„œ ์Œ“์ด๋Š” ๋น—๋ฌผ์˜ ์–‘์„ ๊ณ„์† ํ•ฉ์‚ฐํ•˜์˜€๊ณ  ์ด๋ฅผ ๋งจ ์•„๋žซ์ค„ row๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋ฉด ์Œ“์ธ ๋น—๋ฌผ์˜ ์–‘์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ค๋ฅด๊ธฐ๊นŒ์ง€๊ฐ€ ๊ฝค ๊ฑธ๋ ธ๋‹ค.

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

let [H, W] = input
    .shift()
    .split(" ")
    .map((n) => Number(n));

let map = Array.from({ length: H }, () => {
    return Array(W).fill(0);
});

let arr = input[0].split(" ").map((n) => Number(n));

arr.forEach((height, column) => {
    for (let i = 0; i < height; ++i) {
        map[H - 1 - i][column] = 1;
    }
});

// ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฒดํฌํ•˜๋ฉด์„œ ๋‚ด๋ ค์™€์•ผ ํ•จ
let answer = 0;
let temp = 0;
let flag = undefined;
for (let r = 0; r < H; ++r) {
    flag = 0;
    for (let c = 0; c < W; ++c) {
        if (flag === 1) {
            if (map[r][c] === 0) {
                ++temp;
            } else {
                answer += temp;
                temp = 0;
            }
        } else {
            // flag =0 ์ผ๋•Œ
            if (map[r][c] === 1) {
                flag = 1;
                temp = 0;
            } else {
                continue;
            }
        }
    }
}

console.log(answer);