백준 9655 - 돌 게임
문제링크
문제 접근
- 상근이와 창영이가 서로 한번씩 돌을 가져가는 것을 1라운드라고 생각하자. 돌을 가져갈 때 한번에 1개 혹은 3개를 가져갈 수 있으므로 각 라운드에서 총 가져가지는 돌의 개수는 2개, 4개 혹은 6개이다.
- 전체 돌의 개수(N)가 6보다 작거나 같은 경우를 생각해보자. N = 1,3 의 경우 먼저 시작하는 상근이가 승자이고, N = 2,4,6 인 경우 라운드 한번에 돌을 모두 가져가므로 창영이가 승자이다. N = 5인 경우 한번의 라운드를 진행하고, 1개 혹은 3개가 남은 돌을 상근이가 가져가므로 상근이가 승자이다.
- N > 6 인 경우, N % 6 은 1,2,3,4,5 가 나올 수 있다. 2,4 의 승자는 위에서 언급했듯이 창영이고, 1,3,5 의 승자는 상근이다.
- 이를 일반화하면 N % 6 값이 홀수이면 상근, 짝수이면 창영이가 승자이다.
의사코드(pseudo-code)
- cin >> N
- tmp = N%6
- if tmp%2 == 1: cout << "CY"
- else: cout << "SK"
소스코드 및 분석
전체 코드
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
int tmp = N % 6;
if (tmp % 2 == 1) cout << "SK" << endl;
else cout << "CY" << endl;
}
- 코드 구현은 매우 간단하다.
Leave a comment