πŸ“– [λ°±μ€€μ•Œκ³ λ¦¬μ¦˜ 풀이] 9461 νŒŒλ„λ°˜ μˆ˜μ—΄

πŸ“– 문제

https://www.acmicpc.net/problem/9461

πŸ” 접근법

νŒŒλ„λ°˜ μˆ˜μ—΄μ΄λΌλŠ” λ¬Έμ œμ΄λ‹€.

μ˜ˆμ‹œκ°€ p(1) λΆ€ν„° p(10) κΉŒμ§€ μ£Όμ–΄μ ΈμžˆλŠ” 것을 보고

λ‹€μŒκ³Ό 같은 κ·œμΉ™μ„ 찾을 μ°Ύμ•„μ„œ 

Dynamic Programming 을 톡해 ν•΄κ²°ν•˜μ˜€λ‹€.

p(4) = p(3) + p(2) πŸ‘‰ 2 = 1 + 1

p(5) = p(4) + p(3) πŸ‘‰ 2 = 1 + 1

p(6) = p(5) + p(4) πŸ‘‰ 3 = 2 + 1
        .
        .
        .
p(n) = p(n-3) + p(n-2)

πŸ’» μ½”λ“œ

package problem.dynamic.Q9461;
import java.io.*;

public class Main_9461 {
    public static int n;
    public static long[] d = new long[101];

    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int input[] = input();
        solve();
        for (int i = 1; i <= n; i++) {
            bw.write(Long.toString(d[input[i]]));
            bw.write("\n");
        }
        bw.flush();
        bw.close();
    }

    public static void solve() {
        for (int i = 1; i <= 100; i++) {
            if (i < 4) {
                d[i] = 1;
                continue;
            }
            d[i] = d[i - 3] + d[i - 2];
        }
    }

    public static int[] input() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        int numbers[] = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            numbers[i] = Integer.parseInt(br.readLine());
        }
        br.close();
        return numbers;
    }
}

Written on April 27, 2020