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

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net

 

 

풀이

 

 

# 2x1

2x1 1개

1가지 경우의 수

 

 

 

# 2x2

2x1 2개

1x2 2개

2가지 경우의 수

 

 

# 2x3

3가지 경우의 수

 

 

# 2x4

5가지 경우의 수

 

......

 

 

점화식

dp[n] = dp[n-2] + dp[n-1] 도출 가능

 

 

 

 

 

    public void solution11726() throws Exception{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(reader.readLine());

        int dp[] = new int[1001];


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

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

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

    }

 

여기서 주의할 점 !!

dp 배열 크기를 n+1 로 잡으면 런타임 에러 (ArrayIndexOutOfBounds) 발생하기 때문에

입력의 최대값인 1000 + 1 의 길이로 최대 배열 생성 후 사용

 

 

'코딩테스트 > 문제풀이' 카테고리의 다른 글

[백준] 내리막길 Java  (0) 2023.08.31
[백준] 퇴사 2 Java  (0) 2023.08.31
[백준] 1, 2, 3 더하기 Java  (0) 2023.08.30
[백준] 계단 오르기 Java  (0) 2023.08.29
[백준] 가운데를 말해요 Java  (0) 2023.07.17

+ Recent posts