Problem Solving/BOJ

[백준 9656번] [동적 계획법] 돌 게임 2

  • -
728x90
반응형

Approach

https://viyoung.tistory.com/295 문제와 완벽히 동일하다.

 

[백준 9655번] [동적 계획법] 돌 게임

Approach 최선의 선택을 한다는 사실을 잘 생각해보면, 결과적으로 최소한의 움직임만 고려해주면 된다. 가장 최소한의 움직임에서 움직임이 늘어나는 경우는 3이 선택되어야하는 상황에 1을 선택

viyoung.tistory.com

 

다만, 마지막에 돌을 둔 사람이 지는 것이므로 승자만 바꿔주면 된다.

Code

#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)

using namespace std;

int dp[1001];
int n;

int dp_value(int x)
{
    if (x < 1)
        return 987654321;
    if (dp[x] != -1)
        return dp[x];
    else
    {
        return dp[x] = min(dp_value(x - 1), dp_value(x - 3)) + 1;
    }
}

int main(void)
{
    memset(dp, -1, sizeof(dp));
    dp[1] = 1;
    dp[3] = 1;
    cin >> n;

    int check = dp_value(n);
    if (check % 2 == 1)
    {
        cout << "CY\n";
    }
    else
    {
        cout << "SK\n";
    }
    return 0;
}
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.