algorithm

백준 9507(JAVA)

yjs3819 2021. 7. 23. 17:42
728x90

문제

문제에 주어진 꿍 피보나치를 통해서 주어진 입력에대한 답을 구하면된다.
꿍 피보나치는 d[n] = d[n - 1] + d[n - 2] + d[n - 3] + d[n - 4]이다.

풀이

귀여운 꿍문제를 어떻게풀까?
피보나치 문제기 때문에 dp테이블에 메모이제이션해나가며 풀면 시간초과가 나지않겠다.
바텀업으로 반복문으로 풀었당! (재귀함수로 풀어도됩니당!)
타입에 주의해야한다.

코드

package baekjoon.DP;

import java.io.*;

public class Main9507 {
    static int T;
    static long[] d = new long[70];

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        T = Integer.parseInt(br.readLine());
        dpSolve();
        for(int i = 0; i < T; i++){
            int n = Integer.parseInt(br.readLine());
            bw.write(d[n] +"\n");
        }
        bw.flush();
        bw.close();
    }
    static void dpSolve(){
        d[0] = 1;
        d[1] = 1;
        d[2] = 2;
        d[3] = 4;
        for(int i = 4; i < 70; i++){
            d[i] = d[i - 1] + d[i - 2] + d[i - 3] + d[i - 4];
        }
    }
}
728x90

'algorithm' 카테고리의 다른 글

백준 1092(JAVA)  (0) 2021.08.03
백준 12852(JAVA)  (0) 2021.07.26
백준 2012(JAVA)  (0) 2021.07.22
백준 2212(JAVA)  (0) 2021.07.21
백준 13904(JAVA)  (0) 2021.07.20