๐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);