[백준] Baekjoon Online Judge
문제
돌 게임은 두 명이서 즐기는 재밌는 게임이다.
탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 지게 된다.
두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.
입력
첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000)
출력
상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.
예제 입력 | 예제 출력 |
4 | SK |
풀이
#include <iostream>
using namespace std;
int main() {
int N; // 돌 N개
scanf("%d", &N);
int turn = N / 3 + N % 3;
// 상근이가 이기면 SK를, 창영이가 이기면 CY을 출력
if (turn % 2 == 0)
printf("SK\n");
else
printf("CY\n");
return 0;
}
일단 상근이와 창영이가 승부를 결정 지을 수 있는 턴 이전에는 각 사람이 돌을 몇개 가져가는지는 중요하지 않다. 그러므로 3개씩 가져간다고 가정하고 turn에 N / 3을 더했다. 이러고 나면 돌은 1개 혹은 2개가 남는 경우가 생기는데, 이 돌의 수만큼 턴이 증가한다. 그러므로 둘의 게임이 끝났을 때의 턴의 수는 N / 3 + N % 3이다.
그리고 이렇게 구한 turn이 홀수인지 짝수인지에 따라 상근이와 창영이의 우승이 결정되고, 이를 출력하면 된다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 10825번 - 국영수 (0) | 2023.05.07 |
---|---|
[Baekjoon/C++] 1748번 - 수 이어 쓰기 1 (0) | 2023.05.06 |
[Baekjoon/C++] 1205번 - 등수 구하기 (0) | 2023.04.30 |
[Baekjoon/C++] 2217번 - 로프 (0) | 2023.04.26 |
[Baekjoon/C++] 1158번 - 요세푸스 문제 (0) | 2023.04.14 |