2รn ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ 1ร2, 2ร1 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ n์ด ์ฃผ์ด์ง๋ค. (1 โค n โค 1,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ 2รn ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์ด์ ์ฌ๋ก ๋ ๊ฐ๋ฅผ ๋ํ ๊ฐ์ด ํ์ฌ ๊ฐ๊ณผ ๊ฐ๋ค๋ ๊ฒ์ ์๊ฒ ๋จ
๋ฉ๋ชจ์ด์ ์ด์
์ผ๋ก TopDownํ๋ ํํ๋ก ํ๋ฉด ๋จ
dp[n] = dp[n-1] + dp[n-2]
dp[n] = tiling(n-1) + tiling(n-2)
import java.util.Scanner;
public class DP_1 {
static int dp[];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
dp = new int[n+1];
System.out.println(tiling(n));
}
static int tiling(int n) {
if(n == 0 || n == 1) return 1;
if(dp[n] > 0) return dp[n];
dp[n] = tiling(n-1) + tiling(n-2);
dp[n] %= 100007;
return dp[n];
}
}
์ฑ๊ณต~