[백준]11727 2×n 타일링 2

서은경·2023년 3월 12일
0

CodingTest

목록 보기
58/71

브론즈 풀 땐 몰랐지 이런 절망감 ,,, dp는 왜 풀 때마다 새로울까? 계속 계속 계~~속 푸는게 답이다! 어렵다고 피하지 말고 풀자 꾸준히 푸는게 답이다 !!!

package baekjoon;

import java.util.Scanner;

public class Main_11727 {
    static int[] dp;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        dp = new int[N+1];

        // 초기값 세팅
        dp[1] = 1;
        if(N>1) {
            dp[2] = 3;
        }

        for (int i = 3; i <= N; i++) {
            dp[i] = (dp[i-1] + (2*dp[i-2]))%10007;
        }
        System.out.println(dp[N]);

    }
}

허무하리만치 짧고 간결한 코드 ..

점화식을 구하기 위한 그림
n값이 증가함에 따라 1x2, 2x1, 2x2로 채울수 있도록 직사각형을 나누면 dp[n-1] + 2*dp[n-2] 라는 점화식이 도출된다.
점화식은 직전값과 연관될 수 있도록 생각하면 좀 더 쉽게 접근할 수 있을 것 같다.

한번 틀린 이유는 1이 들어왔을 때


        // 초기값 세팅
        dp[1] = 1;
        if(N>1) {
            dp[2] = 3;
        }

if 조건처리를 안해줘서 ^^;

0개의 댓글

관련 채용 정보