알고리즘

백준 9656번 돌 게임 2 (JAVA)

박카스마시며코딩 2021. 11. 27. 16:40

https://www.acmicpc.net/problem/9656

 

9656번: 돌 게임 2

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

www.acmicpc.net

 

 

dp로 문제 해결

true : SK 승리

false : CY 승리

현재 1개 가져가거나 3개 가져갔을 때 둘 다 이긴다면 이긴다. 라도 판단하였습니다.

그래서 dp[i-1]과 dp[i-3] 둘 다 false라면dp[i]를 true로 하였습니다.

 

 

package BOJ;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.function.Function;

public class BOJ_9656 {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st= new StringTokenizer(br.readLine()," ");
        Function<String,Integer> stoi = Integer::parseInt;
        int n = stoi.apply(st.nextToken());
        boolean [] dp = new boolean[n+5];
        dp[1] = false;
        dp[2] = true;
        dp[3] = false;
        for(int i = 4; i <= n ; i++){
            if(!dp[i-1] && !dp[i-3]){
                dp[i] = true;
            }else{
                dp[i] = false;
            }
        }
        if(dp[n]){
            System.out.println("SK");
        }else{
            System.out.println("CY");
        }
    }
}