반응형

문제 출처 :


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



알고리즘 분석 :


문제 해결에 필요한 사항

1. BigInteger

2. 점화식


자바 라이브러리 BigInteger를 이용하여 해결하면 간단하게 해결된다.


점화식은 다음과 같다. 


i-2번째에서 가로 직사각형(1x2)짜리를 2개 넣어 i번째를 완성, 2x2짜리 정사각형을 1개 넣어 i번째를 완성하거나

i-1번째에서 세로 직사각형(2x1)짜리 1개를 넣어 완성하면 된다.


따라서 DP[i] = DP[i-2]*2 + DP[i-1]이다.





소스 코드 : 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.math.BigInteger;
import java.util.Scanner;
 
public class Main
{
    public static void main(String []args)
    {
        int n;
        BigInteger []DP = new BigInteger[251];
        DP[0= new BigInteger("1");
        DP[1= new BigInteger("1");
        DP[2= new BigInteger("3");
 
        for(int i = 3; i <= 250; i++)
        {
            DP[i] = DP[i-2].multiply(new BigInteger("2"));
            DP[i] = DP[i].add(DP[i-1]);
        }
        
        Scanner sc = new Scanner(System.in);
        
          while(sc.hasNextInt())
          {
             n = sc.nextInt();
 
             System.out.println(DP[n]);
          }
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus


반응형

'Applied > 알고리즘 문제풀이' 카테고리의 다른 글

[2316번] 도시 왕복하기  (4) 2017.04.08
[9373번] 복도 뚫기  (0) 2017.04.07
[4485번] 녹색 옷 입은 애가 젤다지?  (2) 2017.04.07
[2934번] LRH 식물  (0) 2017.04.07
[4386번] Freckles  (0) 2017.04.05