백준 문제풀이/Nodejs

[백준][구현] 2116 주사위 쌓기 NodeJs 구현

꽁이꽁설꽁돌 2025. 3. 31. 23:42
728x90
반응형
     

목차

    문제

     

     

    문제 구현 방향

    맨 아래 주사위를 기준으로 모두 해보면 된다.

    6 * 100000 정도라 시간은 충분하다.

     

     

    문제 풀이

    주사위 전개도에 따른 마주보는 관계 함수만 만들어 주면 쉽게 풀린다.

    인덱스를 기준으로 0-5, 1-3, 2-4가 마주보게 된다.

    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;
    }

     

     

    코드 구현

    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

     

    반응형