STUDY/코딩테스트
백준 9461번 파도반 수열 [JAVA]
CEHON YUJUNG
2019. 10. 18. 18:23
DP알고리즘 문제로 규칙을 찾으면 쉽게 풀 수 있는 문제다.
1차원 배열을 선언해주고 index 4까지는 입력을 해준다
index 5부터는 알고리즘을 작성해서 입력한다.
규칙
P(N) = P(N-5) + P(N-1)
단, 배열을 int로 선언 할 경우, 범위를 초과해서 -값이 입력된다.
이를 방지하기위해 가장 큰 정수형 타입인 long으로 배열을 선언한다.
package codingTest_backjoon;
import java.util.Scanner;
//파도반수열
public class Main_9461 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
for(int r=0; r<num; r++) {
int N = scan.nextInt();
if(N <= 5) {
long[] arg = new long[5];
arg[0] = 1; arg[1] = 1; arg[2] = 1; arg[3] = 2; arg[4] = 2;
System.out.println(arg[N-1]);
}else {
long[] arg = new long[N];
arg[0] = 1; arg[1] = 1; arg[2] = 1; arg[3] = 2; arg[4] = 2;
for(int i=5; i<N; i++) {
arg[i] = arg[i-5] + arg[i-1];
}
System.out.println(arg[N-1]);
}
}
}
}
반응형