본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 9655/javascript] 돌 게임

by tokkiC 2022. 10. 1.

다이나믹 프로그래밍 문제

경우의 수를 처음부터 세어보면

Math.min(arr[i - 1] + 1, arr[i - 3] + 1)

위와 같은 점화식을 얻을 수 있다

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

 

9655번: 돌 게임

상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.

www.acmicpc.net

let input = [];

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input.push(line);
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  let n = Number(inp[0]);
  let arr = Array(1004).fill(0);
  let ans;

  arr[0] = 0;
  arr[1] = 1;
  arr[2] = 2;

  for (let i = 3; i <= n; i++) {
    arr[i] = Math.min(arr[i - 1] + 1, arr[i - 3] + 1);
  }
  if (arr[n] % 2 === 1) {
    ans = "SK";
  } else {
    ans = "CY";
  }
  console.log(ans);
};

댓글