728x90
DP로 문제를 풀어보았습니다.
상근이를 기준으로 하였으며 (1 = 승리, 0 = 패배)
DP[i -1], DP[i - 3], DP[i - 4]이 1이면 지는 경우고
0이면 이기는 경우라고 판단하였습니다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
int n;
int DP[1010];
cin >> n;
DP[1] = 0;
DP[2] = 1;
DP[3] = 0;
DP[4] = 1;
for (int i = 5; i <= n; ++i) {
if (min({ DP[i - 1], DP[i - 3], DP[i - 4] }) == 1) {
DP[i] = 0;
}
else {
DP[i] = 1;
}
}
if (DP[n] == 1) {
cout << "SK" << endl;
}
else {
cout << "CY" << endl;
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 9660번 돌 게임 6 (0) | 2019.09.18 |
---|---|
[C++] 백준 9659번 돌 게임 5 (0) | 2019.09.18 |
[C++] 백준 9657번 돌 게임 3 (0) | 2019.09.18 |
[C++] 백준 9656번 돌 게임 2 (0) | 2019.09.18 |
[C++] 백준 9655번 돌 게임 (0) | 2019.09.18 |