(실버3)
https://www.acmicpc.net/problem/11726
d[3] 은 d[2]의 결과값에 2*1 타일을 붙이면 되고, d[1]의 결과값에 1*2 타일을 붙이면 된다.
-> 즉, d[3]의 값은 d[2]+ d[1] 값이다.
-> d[n]= d[n-2] + d[n-2]
다만, 여기서 주의할 점.
모든값을 정해놓고 마지막에 10007을 나누게 되면 오버플로우가 나므로,
d[i] = d[i]%10007 을 바로 해주어야 한다는 것.
또한, int d[] = new int[N+1]로 할 때의 문제점
만약 N=1 이라는 값을 입력받게 되면 d[2]가 index 범위를 벗어나므로 ( ArrayIndexOutOfBounds) 와 같은 런타임 에러가 날 수 있다.
'Algorithm Study' 카테고리의 다른 글
[BOJ] 2193: 이친수 / JAVA, DP (0) | 2022.05.05 |
---|---|
[BOJ] 9095: 1,2,3 더하기 (0) | 2022.05.04 |
[BOJ] 1003: 피보나치함수 / DP, JAVA (0) | 2022.05.03 |
[BOJ] 1463번: 1로 만들기 / JAVA, DP (0) | 2022.05.03 |
[BOJ] 2468: 안전영역/ JAVA, DFS (0) | 2022.05.02 |