발행일

99클럽 코테 스터디 25일차 TIL + 오늘의 학습 키워드: 완전 탐색

99클럽 코테 스터디 25일차 TIL + 오늘의 학습 키워드: 완전 탐색

이 글은 네이버 블로그에 2025년 3월 7일에 올렸던 것을 그대로 옮겨온 것입니다.

  • 공부한 내용 본인의 언어로 정리하기
function solution(dice) {
  let answer = 0;

  let pair = new Array(7);
  pair[1] = 6;
  pair[2] = 4;
  pair[3] = 5;
  pair[4] = 2;
  pair[5] = 3;
  pair[6] = 1;

  for (let i = 1; i <= 6; i++) {
    let sum = 0;
    let sideMax = 0;
    for (let j = 1; j <= 6; j++) {
      if (j != dice[0][i - 1] && j != dice[0][pair[i] - 1]) {
        sideMax = Math.max(sideMax, j);
      }
    }
    sum += sideMax;

    let x = dice[0][i - 1]; 
    let idx = 0;

    for (let k = 2; k <= dice.length; k++) {
      sideMax = 0;
      for (let l = 1; l <= 6; l++) {
        if (dice[k - 1][l - 1] === x) {
          idx = l;
          break;
        }
      }

      let top = dice[k - 1][pair[idx] - 1];
      let bottom = x;

      for (let m = 1; m <= 6; m++) {
        if (m != top && m != bottom) sideMax = Math.max(sideMax, m);
      }
      sum += sideMax;
      x = top;
    }
    answer = Math.max(answer, sum);
  }

  return answer;
}

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');

let dice = [];
input.slice(1).map((i) => dice.push(i.split(' ').map(Number)));
console.log(solution(dice));
  • 오늘의 회고

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

  • 어떻게 해결했는지

  • 무엇을 새롭게 알았는지

  • 내일 학습할 것은 무엇인지

• 비기너: https://school.programmers.co.kr/learn/courses/30/lessons/42626 (30분)

• 미들러: https://www.acmicpc.net/problem/2116 (1시간 30분)

• 챌린저: https://www.acmicpc.net/problem/2169 (1시간 15분) 비기너(힙) / 이중우선순위큐 : https://school.programmers.co.kr/learn/courses/30/lessons/42628

미들러 / 오목 : https://www.acmicpc.net/problem/2615

챌린저(카카오 블라인드 채용) / 표 병합 : https://school.programmers.co.kr/learn/courses/30/lessons/150366

필수 해시태그: #99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

image