728x90
반응형
목차
문제

문제 구현 방향
맨 아래 주사위를 기준으로 모두 해보면 된다.
6 * 100000 정도라 시간은 충분하다.
문제 풀이
주사위 전개도에 따른 마주보는 관계 함수만 만들어 주면 쉽게 풀린다.
인덱스를 기준으로 0-5, 1-3, 2-4가 마주보게 된다.
javascript
function convert(num) {
if (num === 0) return 5;
else if (num === 5) return 0;
else if (num === 1) return 3;
else if (num === 3) return 1;
else if (num === 2) return 4;
else if (num === 4) return 2;
}
코드 구현
javascript
const input = require("fs")
.readFileSync("./dev/stdin", "utf-8")
.trim()
.split("\n");
let N = +input[0];
let arr = [];
let idx = 1;
let ans = 0;
function convert(num) {
if (num === 0) return 5;
else if (num === 5) return 0;
else if (num === 1) return 3;
else if (num === 3) return 1;
else if (num === 2) return 4;
else if (num === 4) return 2;
}
//윗면과 아랫면 idx를 제외하고 배열을 반환해주는 함수
function choice(a, b, arr) {
let t = [];
for (let i = 0; i < 6; i++) {
if (i !== a && i !== b) {
t.push(arr[i]);
}
}
return t;
}
while (idx < input.length) {
arr.push(input[idx].trim().split(" ").map(Number));
idx++;
}
for (let i = 0; i < 6; i++) {
let top = arr[0][i];
let cnt = Math.max(...choice(i, convert(i), arr[0]));
for (let j = 1; j < N; j++) {
let idx = arr[j].indexOf(top); //윗면의 인덱스를 찾아 준다.
top = arr[j][convert(idx)]; // 마주보는 면이 새로운 top
cnt += Math.max(...choice(idx, convert(idx), arr[j]));
}
ans = Math.max(ans, cnt);
}
console.log(ans);
참고
아래와 유사한 문제라 풀어보면 좋을 것 같다.
https://be-senior-developer.tistory.com/317
[백준][구현] 주사위 1041 NodeJs 구현
목차문제 문제 구현 방향생각보다 까다로운 문제이다. 주사위를 더하는 규칙을 찾았더라도 3면, 2면 일때 최솟값을 찾는 것이 까다롭다. 문제 풀이주사위가 마주볼 경우에 그 값들은 최솟값
be-senior-developer.tistory.com
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][구현] 1041 주사위 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 |