티스토리 뷰

두줄로 타일깔기는 라인 길이에 따라 타일을 배열하는 방법을 생각해서 처리하면된다. 


구현할 때 재귀를 이용하여 처리하면 stack overflow 가 발생한다. 


f(n) 을 구하는 방법은 

f(n-1) 의 타일 개수에 1 x 2 타일을 하나 추가하는 방법과

f(n-2)의 타일 개수에 2 x 2 타일을 추가하는 방법 

두개를 더하면 된다. 


import java.util.Scanner;
/**
* 정올, 1411, 다이나믹
* 두 줄로 타일 깔기
*
* @author whitebeard-k
*
*/
public class Problem1411 {
public static int[] memo = new int[1000001];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
memo[1] = 1;
memo[2] = 3;
for(int i = 3; i <= n; i++) {
memo[i] = ((memo[i-1]) + (2*memo[i-2]))%20100529;
}
System.out.println(memo[n]);
}
}






반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
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
글 보관함