[백준 C++] 9658 돌 게임 4

이성훈·2022년 9월 16일
0

백준(Baekjoon online judge)

목록 보기
107/177

문제

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

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

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

입력

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

출력

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

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

풀이

그동안 그런디값을 계산할때 마지막 돌을 가져가면 승리하므로
*0 = *0 //*1 = *1을 두고 계산햇었다.
그런데 이 문제와 같이 마지막돌을 가져가면 패배하는경우는
*0 = *1 //*1 = *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;

int mod[] = { 1, 0, 1, 0, 2, 3, 2 };
//          { 0, 1, 0, 1, 2, 3, 2 }; 
void init();
void init() {
    int n;
    scanf("%d", &n);
    n %= 7;
    mod[n] ? printf("SK") : printf("CY");
}

int main(void) {
    init();

    return 0;
}
profile
I will be a socially developer

0개의 댓글