https://www.acmicpc.net/problem/11727
코드 :
dp, 탑다운
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int[] tiles;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
tiles = new int[n + 1];
tiles[0] = 1;
tiles[1] = 1;
System.out.println(tile(n));
}
public static int tile(int n){
if(tiles[n] != 0) {
return tiles[n];
}
tiles[n] = (tile(n - 1) + 2 * tile(n - 2)) % 10007;
return tiles[n];
}
}
직접 그려보면, 두칸짜리 네모가 생기면서, f(n) = f(n-1) + 2*f(n-2)가 되었다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 11052번 - 카드 구매하기 (Java 8) (0) | 2022.03.23 |
---|---|
백준 9095번 - 1, 2, 3 더하기 (Java 8) (0) | 2022.03.22 |
백준 11726번 - 2xn 타일링 (Java 8) (0) | 2022.03.22 |
백준 1463번 - 1로 만들기 (Java 8) (0) | 2022.03.21 |
백준 11576번 - Base Conversion (Java 8) (0) | 2022.03.20 |
댓글