[백준 9659] 돌 게임 5 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
탁자 위에 놓인 N
개의 돌을 두 사람이 번갈아가며 가져가는 게임입니다.
한 번에 가져갈 수 있는 돌의 개수는 1개
또는 3개
입니다.
마지막 돌을 가져가는 사람이 승리합니다.
상근이가 먼저 시작하며, 두 사람은 항상 최선의 수를 둔다고 가정합니다.
접근법
- 가져갈 수 있는 돌의 수가
1개
또는3개
로 제한되어 있으므로,
N
에 따라 게임 결과가 번갈아 나타납니다. - 게임을 직접 시뮬레이션하거나,
N
의 홀짝성에 따라 패턴을 찾을 수 있습니다.N
이 홀수일 경우, 상근이가 마지막 돌을 가져가므로 승리합니다.N
이 짝수일 경우, 창영이가 마지막 돌을 가져가므로 승리합니다.
Code
C#
1
2
3
4
5
6
7
8
using System;
class Program {
static void Main() {
long n = long.Parse(Console.ReadLine());
Console.WriteLine(n % 2 == 0 ? "CY" : "SK");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll cntRock; cin >> cntRock;
if (cntRock % 2 == 0) cout << "CY\n";
else cout << "SK\n";
return 0;
}