문제
풀이
- 가장 왼쪽 열과 가장 오른쪽 열을 제외한 모든 열에서 해당 위치를 기준으로 왼쪽에서 가장 많은 블록의 개수와 오른쪽에서 가장 많은 블록의 개수를 구한다.
- 그 중에서 더 작은 값에 현재 위치의 블록의 개수를 감소시킨다.
소스 코드
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = require("fs")
.readFileSync(filePath)
.toString()
.trim()
.split("\n");
const [H, W] = input[0].split(" ").map(Number);
const map = input[1].split(" ").map(Number);
let answer = 0;
for (let i = 1; i < W - 1; i++) {
let left = 0;
let right = 0;
for (let j = 0; j < i; j++) left = Math.max(left, map[j]);
for (let j = i + 1; j < W; j++) right = Math.max(right, map[j]);
const target = Math.min(left, right) - map[i];
if (target > 0) answer += target;
}
console.log(answer);
'알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 백준 14500 (테트로미노, 자바스크립트) (2) | 2023.05.30 |
---|---|
[알고리즘 연습] 백준 16234 (인구 이동, 자바스크립트) (0) | 2023.05.30 |
[알고리즘 연습] 백준 20207 (달력, 자바스크립트) (0) | 2023.05.29 |
[알고리즘 연습] 백준 7569 (토마토, 자바스크립트) (0) | 2023.05.26 |
[알고리즘 연습] 백준 20164 (홀수 홀릭 호석, 자바스크립트) (1) | 2023.05.26 |