Odds and Ends

백준 : 9655번 돌 게임 [파이썬, 실버5] 본문

코딩 테스트

백준 : 9655번 돌 게임 [파이썬, 실버5]

Squidward 2022. 7. 31. 01:13

문제

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

탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.

입력

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

출력

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

예제 입력

5

예제 출력

SK

시작하는 사람이 정해져있고, 1개 혹은 3개만 가져갈 수 있다. (2개가 남았을 때 2개만 가져가지 못한다)

1일 때는 SK, 2일 때는 CY, 3일 때는 다시 SK, 4일 때는 CY가 이긴다.

 

==> n개가 있을 때 SK가 이기는 경우의 수는?

: 점화식으로 풀 수 있다. 1개 혹은 3개만 가져갈 수 있으므로 상대방의 선택지는 n-1 혹은 n-3이 될 것이다.

따라서 자신이 가져갈 수 있는 다음 경우의 수는 n-2, n-4, n-6 총 3가지가 될 것이다.

이렇게 내려가다 보면 SK는 n이 홀수 일 때 이길 수 있고, 짝수 일 때는 CY가 우승을 차지하게 된다.

n = int(input())
if n % 2 == 0:
    print('CY')
else:
    print('SK')
728x90