백준 9657 - 돌 게임 3

Updated:

Java

9657 번 - 돌 게임 3

문제

접근 방법

패턴을 보고 규칙을 찾는 것이 중요한 문제였다.

SK와 CY는 최선을 다하여 게임을 승리하려 한다.

따라서, SK가 먼저 돌을 가져가므로, CY가 현재 돌의 개수에서 [1, 3, 4]개 보다 적은 돌의 개수가 주어졌을 때와 비교하여 모두 SK가 이긴 경우 CY에게 후수를 넘겨주기 때문에, CY가 이기게 된다.

코드

import java.util.*;
import java.io.*;

public class Main {
	static int n, result;
	static boolean[] dp;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	n = stoi(br.readLine());
    	dp = new boolean[1001];

    	dp[1] = true;
    	dp[2] = false;
    	dp[3] = true;
    	dp[4] = true;

    	if(n <= 4) {
    		if(dp[n])
        		System.out.println("SK");
        	else
        		System.out.println("CY");
    		return;
    	}

    	for(int i = 5; i <= n; i++) {
    		if(dp[i - 1] && dp[i - 3] && dp[i - 4])
    			dp[i] = false;
    		else
    			dp[i] = true;
    	}
    	if(dp[n])
    		System.out.println("SK");
    	else
    		System.out.println("CY");



    	br.close();
	}

	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

후기

사실, 상근이 다 이겼을 때 다음 창영이 후수를 받아 이기는지 제대로 이해하지 못하였다.

개선할 점