백준 9655 - 돌 게임

less than 1 minute read

문제링크

문제 접근

  • 상근이와 창영이가 서로 한번씩 돌을 가져가는 것을 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