[백준] 9655 돌게임

gonn-i·2024년 6월 17일
0

알고리즘 문풀 ✏️

목록 보기
31/35

문제링크

접근 방향 설명

퐁당퐁당 문제 (= 퐁으로 끝나냐 당으로 끝나냐를 봐야함 )

// 상 창 상 창 상 (5)
// 상상상 창 상 (3)
// 상 창창창 상 (3)

다음과 같이 순서가 전개되는데, turn이 홀이면 상근, turn이 짝이면 창영이가 이긴다
가져갈 수 있는 돌의 수가 1 or 3 인데, 둘다 홀수이니까 최소한의 방법으로 게임이 진행될때의 turn이 몇번 돌아가는지를 기준으로 답을 구했다.

let turn = Math.floor(N / 3);
turn += N % 3;

let fs = require('fs');
let filePath = process.platform === 'linux' ? '/dev/stdin' : '/input.txt';
let N = +fs
  .readFileSync(__dirname + filePath)
  .toString()
  .trim();

let turn = Math.floor(N / 3);
turn += N % 3;

console.log(turn % 2 == 1 ? 'SK' : 'CY');

풀이 과정에서 새롭게 느낀점(배운점)

첫 DP 문제! 아무런 개념없이 그냥 풀어봤는데 다른 DP 푸는 유형을 좀 읽어봐야겠다!


돌 게임 성공

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
1 초 128 MB 31968 21047 17862 66.894%

문제

돌 게임은 두 명이서 즐기는 재밌는 게임이다.

탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다.

두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.

입력

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000)

출력

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

0개의 댓글