728x90
반응형
목차
문제

문제 구현 방향
생각보다 까다로운 문제이다. 주사위를 더하는 규칙을 찾았더라도 3면, 2면 일때 최솟값을 찾는 것이 까다롭다.
문제 풀이
주사위가 마주볼 경우에 그 값들은 최솟값이 될 수 없다.
따라서 다음과 같은 로직을 세울 수 있다.
javascript
for (let i = 0; i < 6; i++) {
one = Math.min(one, v[i]);
for (let j = i + 1; j < 6; j++) {
if (i + j === 5) continue;
two = Math.min(two, v[i] + v[j]);
for (let k = j + 1; k < 6; k++) {
if (i + k === 5 || j + k === 5) continue;
three = Math.min(three, v[i] + v[j] + v[k]);
}
}
}
코드 구현
n은 1일때 예외처리하는 것 잊지 말자
javascript
const fs = require("fs");
const input = fs.readFileSync("./dev/stdin", "utf-8").trim().split("\n");
let N = +input[0];
let v = input[1].split(" ").map(Number);
let one = Infinity,
two = Infinity,
three = Infinity;
let largest = 0,
sum = 0;
for (let i = 0; i < 6; i++) {
sum += v[i];
largest = Math.max(largest, v[i]);
}
for (let i = 0; i < 6; i++) {
one = Math.min(one, v[i]);
for (let j = i + 1; j < 6; j++) {
if (i + j === 5) continue;
two = Math.min(two, v[i] + v[j]);
for (let k = j + 1; k < 6; k++) {
if (i + k === 5 || j + k === 5) continue;
three = Math.min(three, v[i] + v[j] + v[k]);
}
}
}
let result;
if (N === 1) {
result = sum - largest;
} else {
result = 4 * three + (8 * N - 12) * two + (5 * N - 6) * (N - 2) * one;
}
console.log(result);
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][구현] 2116 주사위 쌓기 NodeJs 구현 (0) | 2025.03.31 |
---|---|
[백준][DP] 2240 자두나무 NodeJs 구현 (0) | 2025.02.11 |
[백준][DP] 4811 알약 NodeJs 구현 (1) | 2025.02.11 |
[백준][dp][dfs] 1520 NodeJs 구현 (0) | 2025.02.07 |
[백준][bfs] 1600 말이 되고픈 원숭이 NodeJs 구현 (0) | 2025.02.06 |