알고리즘/백준

[백준] 11726번 : 2 x n 타일링 - JAVA [자바]

DevelopJJong 2025. 11. 28. 16:22

문제

문제 링크 : https://www.acmicpc.net/problem/11726


풀이

ㅋㅋ 그림 못그리긴 한다


작성한 코드

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] dp = new int[n+1];
        dp[1] = 1;
        if(n>=2) dp[2] = 2; // 만약 1이 들어온다면 배열이 터지는 거 방지
        for(int i=3; i<=n; i++){
            dp[i] = (dp[i-1] + dp[i-2])%10007;
        }
        System.out.println(dp[n]);
    }
}

보완할 점 / 헷갈린 점

점화식을 도출하는 게 처음에는 쉽지 않았다.

하지만 막상 직접 손으로 도형을 그려보니까 규칙이 보이기 시작했다.

코드를 다 작성하고 나니까 n = 1 일 때 ArrayIndexOutOfBounds 가 자꾸 나서 왜 이럴까? 생각을 해보니까
그 전에 코드는 if(n>=2) 이런식으로 조건을 달지 않아서 n=1이면 배열이 Int[2]짜리가 생기는데 dp[2]를 넣을 자리가 없는거였다.
그래서 계속 터지는 거 였다. 

생각보다 알고리즘 문제 푸는게 재밌는거같당