백준 BaekJoon 9661번: 돌 게임7 [Java]

2021-01-10


문제

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

탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 4x개 만큼 가져갈 수 있다. 즉, 가능한 개수는 1, 4, 16, 64, ...개 이다. 4x개만큼 돌을 가져갈 수 있는 방법이 없는 사람이 게임을 지게 된다.

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

입력

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

출력

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


import java.util.Scanner;

public class TemplateA {
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		int n = scan.nextInt();
		
		int set = n ;
		// n을 담아둘 변수
		int plus = 0;
		// 4의 증가하는 승수를 담아둘 변수
		int count = 0;
		// 상근과 창영이의 턴을 체크할 변수
			while(true) {
				set -= Math.pow(4, plus);
				// 각 턴마다 4의 plus승을 빼줌
				plus++;
				count++;
				//턴이 지났으니 모두 하나씩증가
				if(set < 0) {
					// set이 0보다 작아진 경우는 그 턴에 4의 plus 재곱의 값이
					// 컸다는 이야기 그턴에 사람이 패배
					if(count % 2 == 0) {
						System.out.println("SK");
						break;
					}else {
						System.out.println("CY");
						break;
					}
				}
			}
	}
}
	

출처링크 : www.acmicpc.net/problem/9661

 

9661번: 돌 게임 7

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

www.acmicpc.net