https://www.acmicpc.net/problem/15877
game 과 dp 문제이다.
#include <iostream>
using namespace std;
int x, y;
bool dp[1011][1011];
int main() {
cin>>x>>y;
dp[1][0] = true;
dp[0][1] = true;
dp[1][3] = true;
dp[3][1] = true;
for(int i = 2 ; i <= y; i++ ){
if(!dp[0][i-1]) dp[0][i] = true;
}
for(int i = 2 ; i <= x; i++ ){
if(!dp[i-1][0]) dp[i][0] = true;
}
for(int i = 1; i <= x; i++){
for(int j = 1; j <= y; j++){
if(!dp[i-1][j] || !dp[i][j-1]) dp[i][j] = true;
if(i >= 3 && j >= 1 && !dp[i-3][j-1]) dp[i][j] = true;
if(i >= 1 && j >= 3 && !dp[i-1][j-3]) dp[i][j] = true;
}
}
if(dp[x][y]) cout<<"Alice";
else cout<<"Bob";
return 0;
}
'algorithm' 카테고리의 다른 글
1450 로봇청소기 (0) | 2022.05.16 |
---|---|
16888 루트 게임 (0) | 2022.05.15 |
1068 (0) | 2022.05.13 |
휴게소 세우기 (0) | 2022.05.11 |
보석 도둑 (0) | 2022.05.09 |