https://www.acmicpc.net/problem/14495
저는 DP를 이용해 문제를 해결하였습니다.
피보나치 수열을 풀때와 같지만, 1 2 3 만 다르기 때문에 이 부분만 변경하여 문제를 해결하였습니다.
package BOJ.dp;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ_14495 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
long[] dp = new long[n+1];
long result = cal(n,dp);
System.out.println(result);
}
private static final int NOT_VALID = 0;
private static long cal(int n,long[] dp) {
if(n == 1 || n == 2 || n == 3){
return 1;
}
if(dp[n] != NOT_VALID){
return dp[n];
}
return dp[n] = cal(n-1,dp) + cal(n-3,dp);
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 x 사이의 개수 (JAVA) (0) | 2023.10.13 |
---|---|
백준 2852번 NBA농구 (JAVA) (0) | 2023.10.12 |
백준 14497번 주난의 난 (JAVA) (1) | 2023.10.10 |
백준 29703번 펭귄의 하루 (JAVA) (1) | 2023.10.09 |
백준 1251번 단어 나누기 (JAVA) (0) | 2023.10.08 |