접근 : BF
수식으로 접근했을 때는 정말 어렵게 접근했다.
컴퓨터의 연산능력을 믿고 BF를 돌리니 통과.
TIME의 초기값을 99999999 정도로 잡았더니 계속해서 틀렸다고 나왔다.
알고 보니 초기값을 더 크게 잡았어야 했던 것...
앞으로는 Infinity로 설정해야겠다.
Javascript
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.split("\n")
.map((val) => val.trim());
function solution(input) {
let [n, m, b] = input
.shift()
.split(" ")
.map((v) => +v);
let map = [];
let Max = -99999;
let Min = 99999;
for (let i = 0; i < n; i++) {
let temp = input
.shift()
.split(" ")
.map((v) => +v);
let max = Math.max(...temp);
let min = Math.min(...temp);
Max = Math.max(Max, max);
Min = Math.min(Min, min);
map.push(temp);
}
let time = Infinity;
let height = 0;
for (let h = Max; h >= Min; h--) {
let t = 0;
let bag = b;
for (let a = 0; a < n; a++) {
for (let b = 0; b < m; b++) {
if (map[a][b] === h) continue;
else if (map[a][b] > h) {
t += (map[a][b] - h) * 2;
bag += map[a][b] - h;
} else {
t += h - map[a][b];
bag -= h - map[a][b];
}
}
}
if (bag < 0) continue;
if (t <= time) {
if (t === time && h < height) {
time = t;
} else {
time = t;
height = h;
}
}
}
let answer = [time, height].join(" ");
console.log(answer);
}
solution(input);
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 1969 DNA (Javascript) (0) | 2022.06.24 |
---|---|
[baekjoon] 5635 생일 (Javascript) (0) | 2022.06.24 |
[baekjoon] 2563 색종이 (Javascript) (0) | 2022.06.22 |
[baekjoon] 8979 올림픽 (Javascript) (0) | 2022.06.22 |
[baekjoon] 도로와 신호등 2980 (Javascript) (0) | 2022.06.20 |