https://www.acmicpc.net/problem/14495
14495번: 피보나치 비스무리한 수열
피보나치 비스무리한 수열은 f(n) = f(n-1) + f(n-3)인 수열이다. f(1) = f(2) = f(3) = 1이며 피보나치 비스무리한 수열을 나열하면 다음과 같다. 1, 1, 1, 2, 3, 4, 6, 9, 13, 19, ... 자연수 n을 입력받아 n번째 피보
www.acmicpc.net
저는 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 |