티스토리 뷰

https://www.acmicpc.net/problem/12869

 

12869번: 뮤탈리스크

1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다.

www.acmicpc.net

 

DP

 

const fs = require('fs');
const input = fs.readFileSync("./dev/stdin").toString().trim().split("\n");
const N = Number(input[0])
const SCV = input[1].split(' ').map(Number);

if (N == 2) {
  SCV.push(0)
} else if (N == 1) {
  SCV.push(0)
  SCV.push(0)
}

const dx = [9, 3, 9, 3, 1, 1];
const dy = [3, 9, 1, 1, 9, 3];
const dz = [1, 1, 3, 9, 3, 9];
let memo = Array.from(Array(61), () => Array.from(Array(61), () => Array(61).fill(Infinity)))

function mutal(scv1, scv2, scv3) {
  if (scv1 < 0) scv1 = 0;
  if (scv2 < 0) scv2 = 0;
  if (scv3 < 0) scv3 = 0;

  if (scv1 == 0 && scv2 == 0 && scv3 == 0) {
    return 0;
  }

  let ret = memo[scv1][scv2][scv3];

  if (ret != Infinity) {
    return ret;
  }


  for (let i = 0; i < 6; i++) {
    ret = Math.min(ret, mutal(scv1 - dx[i], scv2 - dy[i], scv3 - dz[i]) + 1)
  }
  memo[scv1][scv2][scv3] = ret;
  return ret;

}


const answer = mutal(SCV[0], SCV[1], SCV[2],)
console.log(answer)
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함