728x90
누가 돌을 마지막 돌을 가져가는지 구하는 문제입니다.
수학, DP로 문제를 풀 수 있습니다.
저는 DP로 접근하여서 문제를 해결했습니다.
DP[1] = 1 //상근승
DP[2] = 0 //창영승
DP[3] = 1 //상근승
기본 결과를 등록해주었습니다.
if((DP[i-1] & DP[i-3]) == 1) {
DP[i] = 0;
} else {
DP[i] = 1;
}
돌은 1개, 3개를 들고 갈 수 있으므로 i개의 돌이 있을 때 결과를 구하려면 i개 -1개, -3개의 결과를 확인하면 됩니다.
상근이가 먼저 하므로 두 경기다 상근이가 이긴 경기라면 창영이가 이깁니다.
그 외의 결과는 상근이가 이깁니다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static int n;
static int[] DP = new int[1001];
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 = Integer.parseInt(br.readLine());
DP[1] = 1;
DP[2] = 0;
DP[3] = 1;
for(int i=4; i<1001; ++i) {
if((DP[i-1] & DP[i-3]) == 1) {
DP[i] = 0;
} else {
DP[i] = 1;
}
}
bw.write(DP[n]==1?"SK":"CY");
bw.close();
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 9657번 돌 게임 3 (0) | 2023.02.16 |
---|---|
[Java] 백준 9656번 돌 게임 2 (0) | 2023.02.16 |
[JavaScript] 프로그래머스 - 행렬과 연산 (0) | 2023.02.16 |
[JavaScript] 프로그래머스 - 사라지는 발판 (0) | 2023.02.16 |
[Java] 백준 2563번 색종이 (0) | 2023.02.16 |