[JS/백준]{구현}(14719) 빗물

202209월 26

백준 문제 링크

문제 설명

의외로 간단하게 풀수가 있는데 현재 블록에서 자신을 포함한 왼쪽과 오른쪽에서 가장 높은 블록들중 더

작은 블록 높이가 현재 블록에 채워질 물의 높이가 된다. 처음에는 나도 이게 되나? 싶었지만 의외로 잘 된다.


풀이 코드

const line = require("fs").readFileSync("./input.txt", "utf8");
const inputData = line.trim().split("\n");

const [h, w] = inputData[0].split(" ").map((val) => +val);

const rain = inputData[1].split(" ").map((val) => +val);
let water = 0;

for (let i = 0; i < rain.length; i++) {
  const maxLen = Math.max(...rain.slice(0, i + 1));
  const minLen = Math.max(...rain.slice(i));
  const minBlock = Math.min(maxLen, minLen);
  water += minBlock - rain[i];
}
console.log(water);