컴퓨터 공학/백준
[백준] JAVA 자바 : 2×n 타일링 (11726번)
kim-dev
2024. 1. 22. 20:58
반응형
사실 이 문제 이전에 나온 1로 만들기 문제는 못 풀어서 구글링해서 겨우 풀었는데…ㅋㅋ
DP 알고리즘을 한 번 이해하고 나니까 이런 문제 정도는 굉장히 쉽게 풀리는 듯?
아직 실버3 수준이라서 그런지… 조금만 사고하면 어렵지 않게 풀 수 있다.
DP알고리즘의 여느 때처럼 이전 값들을 저장할 수 있는 배열을 만들어준 다음 0번째 인덱스와 1번째 인덱스에 1을 할당한다. (초깃값 설정)
이후 Bottom-Top 방식을 채용해서 i를 2부터 X까지 반복시키면서
dp[i]에는 dp[i-1] + dp[i-2], 즉 1×2로 채우는 방식 + 2×1로 채우는 방식의 경우의 수를 더해주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Tiling_2n {
public static int stoi(String str) {
return Integer.parseInt(str);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int X = stoi(br.readLine());
long[] dp = new long[X+1];
dp[0] = 1;
dp[1] = 1;
for (int i=2; i<=X; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]) % 10007;
}
System.out.println(dp[X]);
}
}
로그인
www.acmicpc.net
작성일자: 2023-11-24