본문 바로가기

온라인 코딩/기타(Other)

[백준] 9655번 돌 게임

 

 

문제

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream>
 
constexpr int MAX_N        = 1000;
constexpr int SK        = 0;
constexpr int CY        = 1;
 
int main() {
    int N;
    std::cin >> N;
 
    int player = SK;
    while (N > 0) {
 
        if (N / 3 == 0) {
            --N;
        }
        else {
            N -= 3;
        }
        player = 1 - player;
    }
 
    if (player)
        std::cout << "SK" << "\n";
    else
        std::cout << "CY" << "\n";
}

 

후기

알고리즘 게임 키워드가 있어서 한번 풀어봤다.

이 문제는 둘이 번갈아가면서 돌을 가져가는 간단한 게임이다. 비슷한 문제도 6개 정도 더 있다.

 

이 문제에서 1 또는 3개의 돌을 가져갈 수 있다 하였는데 N/3으로 나눠서 3개보다 작다면 1개씩 그 외에는 3개씩 가져가게 하면서 누가 승리를 하는지 판단하게 하였다.

 

 

 

출처 및 레퍼런스

문제 링크:https://www.acmicpc.net/problem/9655