https://www.acmicpc.net/problem/9655
DP쓸필요 없이 그냥 단순히 규칙만 찾으면 끝나는 문제다.
"
n = 1 : 돌이 1개가 있으면 상근이가 1개를 가져가면 끝나므로 상근이가 이긴다.
n = 2 : 처음에 상근이가 1개를 가져가고 창영이가 남은 1개를 가져가면 되므로 창영이가 이긴다.
n = 3 : 상근이가 처음에 돌 3개를 가져가면 끝나므로 상근이가 이긴다.
n = 4 : 상근이가 돌 1개를 가져가든, 3개를 가져가든 돌이 1개나 3개가 남으므로 창영이가 이긴다.
n = 5 : 상근이가 처음에 돌 1개를 가져갈 수 도 있고 3개를 가져갈 수도 있다.
→ 1개를 가져갔을 경우 : 4개가 남고 창영이가 1개를 가져가든 3개를 가져가든 1개나 3개가 남으므로 상근이가 이긴다.
→ 3개를 가져갔을 경우 : 2개가 남고 창영이가 1개만 가져갈 수 있으므로 상근이가 이긴다.
"
즉 돌이 홀수개면 상근이가 이기고 짤수개면 창영이가 이긴다.
DP문제는 우선은 어떻게든 규칙성을 찾으려 하여 점화식을 찾으려 해야하고 그 규칙이 간단하면 아래와 같이 DP테이블을 쓰지 않아도 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void solution(int n){
if(n%2==0)
System.out.println("CY");
else
System.out.println("SK");
}
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());
solution(n);
}
}
'알고리즘 > DP(Dynamic programming, 동적프로그래밍)' 카테고리의 다른 글
백준(BOJ) 11726: 2×n 타일링 (0) | 2023.12.29 |
---|---|
백준(BOJ) 15486 퇴사2 (0) | 2023.11.12 |
백준(BOJ) 1010번 다리놓기 (1) | 2023.11.09 |
백준(BOJ) 9095 : 1, 2, 3 더하기 (countSum과 같은 문제) (0) | 2023.08.18 |
[백준] 2293 동전1 (0) | 2023.05.31 |