[백준 C++] 9659 돌게임 5

이성훈·2022년 9월 16일
0

백준(Baekjoon online judge)

목록 보기
106/177

문제

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

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

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

입력

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

출력

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

https://www.acmicpc.net/problem/9659

풀이

기존의 그런디수를 구하는 메커니즘을 이해한다면, n을 0부터 적어보며 규칙을 찾을 수 가 있다.
https://velog.io/@cldhfleks2/11871 (그런디수 구하는 방법)
규칙은 아래와 같다.

짝수 일때 그런디수가 0 이되어 창영이가 이기고
홀수 일때 그런디수가 0이아니므로 상근이가 이긴다.

#define _CRT_SECURE_NO_WARNINGS 
#include <bits/stdc++.h>
using std::vector; using std::stack; using std::queue;
using std::deque; using std::string; using std::pair;
using std::sort;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<double, double> pdd;
typedef pair<ll, ll> pll;
typedef pair<ll, int> pli;
typedef pair<int, ll> pil;
typedef pair<int, char> pic;
typedef pair<char, int> pci;


void init();
void init() {
    int n;
    scanf("%d", &n);
    n % 2 ? printf("SK") : printf("CY");
}

int main(void) {
    init();


    return 0;
}
profile
I will be a socially developer

0개의 댓글