백준 11726번 (점화식 깔끔하게)

김경욱·2025년 9월 20일

백준

목록 보기
86/121

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;

import static java.util.Collections.*;

public class Main {
public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int N = Integer.parseInt(br.readLine());

    long[] dp = new long[N+3];

    dp[0] = 0;
    dp[1] = 1;
    dp[2] = 2;


    for (int i = 1 ; i <N;i++)
    {
        dp[i+2] = (dp[i+1]+dp[i]) % 10007;
    }



    System.out.println(dp[N]);

// 11 --
// 111 1-- --1
// 1111 ---- 11-- --11 1--1
// 11111 1---- ----1 1--11 11--1 111-- --1-- --111
// 111111

}

}

dp[i]의 값이 너무나도 커져서 애초에 처음부터 dp배열의 값을 10007로 나눈 나머지로 설정을 해야 답이 나오는 문제였다. 신선했던 것 같다. 값이 너무 커질땐 무작정 double을 쓰는게 아닌 식을 더 깔끔하게 정립해야 한다는 걸 배웠다.

0개의 댓글