치춘짱베리굿나이스

[백준] 9658 본문

C C++/알고리즘풀이

[백준] 9658

치춘 2023. 7. 12. 23:08

돌 게임 4

문제

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

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

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

입력

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

출력

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

풀이

#include <iostream>

int main(void) {
    int n;
    int dp[1001];

    std::cin >> n;

    dp[1] = 0;
    dp[2] = 1;
    dp[3] = 0;
    dp[4] = 1;

    for (int i = 5; i <= n; i++) {
        if (dp[i - 1] == 1 && dp[i - 3] == 1 && dp[i - 4] == 1)
            dp[i] = 0;
        else dp[i] = 1;
    }
    std::cout << (dp[n] == 1 ? "SK" : "CY") << "\n";
}

반성회

9657번과 정확히 똑같은 방법으로 풀되, 시작점 4개 (dp[1], dp[2], dp[3], dp[4]) 만 조정해주면 된다

'C C++ > 알고리즘풀이' 카테고리의 다른 글

[백준] 9659  (0) 2023.07.12
[백준] 2003  (0) 2023.07.12
[백준] 9657  (0) 2023.07.12
[백준] 9656  (0) 2023.07.11
[백준] 9655  (0) 2023.07.11
Comments