끄적끄적 코딩
article thumbnail
728x90

입력이 1조까지 받으므로 하나 하나 계산을 할 경우 시간초과가 발생합니다.

1개 4개를 가져가는 경우에 대한 규칙을 찾아보았습니다.
먼저 DP를 사용해서 1, 4개를 가져가는 경우에 대해서 결과값을 찍어보았습니다.
그 결과 1 0 1 1 0 이 반복해서 나오는것을 알 수 있었습니다.

그 후 16을 포함해서 가져가는 경우에 대해서 결과값을 찍어보았습니다.
결과는 위와 마찬가지로 1 0 1 1 0이 반복해서 나왔습니다.

4의 배수이므로 모든 결과가 같을 것이라 생각해서 1 0 1 1 0을 담은 배열을 만들어주었습니다.
입력 받은 값을 모듈러 연산을 해서 위의 배열 값을 출력해주었습니다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
	static long n;
	static int[] ans = new int[7];
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		n = Long.parseLong(br.readLine()) - 1;
		ans[0] = 1;
		ans[1] = 0;
		ans[2] = 1;
		ans[3] = 0;
		ans[4] = 1;
		if(n < 3){
            bw.write(((n%2==0)?1:0)==1?"SK":"CY");
        } else {
            n -= 3;
            n %= 5;
		    bw.write(ans[(int) n]==1?"SK":"CY");
        }
		bw.close();
	}
}

 

검색 태그