알고리즘106 :: BOJ_11726_2XN타일링
두가지 접근 방식으로 문제를 해결하였습니다. 1) Bottom-up 과 2) Top-down 으로 접근하였습니다.
기본적으로 이 문제는 피보나치 수열에 대한 이해를 근본으로 하고 있습니다.
1) 바텀업
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package backjun;
import java.util.*;
public class BOJ_11726_2n타일링 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] dp = new int[n+2];
dp[1] = 1;
dp[2] = 2;
for(int i=3; i<=n; i++) {
dp[i] = (dp[i-1]+dp[i-2])%10007;
}
System.out.println(dp[n]);
}
}
|
cs |
dp[n+1] 라고 하면 n이 1이라면 dp[2] 가 2 가 된다면 dp의 크기가 2인데 접근이 2가 되서 인덱스가 어레이를 초과하게 됩니다.
2) 탑다운
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.util.*;
public class Main {
static int[] dp = new int[1001];
static int fibo(int n) {
if(n==0 || n==1)
return 1;
if(dp[n]>0)
return dp[n];
dp[n] = fibo(n-1)+fibo(n-2);
dp[n] %= 10007;
return dp[n];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(fibo(n));
}
}
|
cs |
'알고리즘' 카테고리의 다른 글
알고리즘108 :: 구간합 (JAVA) (0) | 2020.09.30 |
---|---|
알고리즘107 :: 투포인트 - BOJ_수들의합2 (0) | 2020.09.28 |
알고리즘105 :: BOJ_2056_작업 (0) | 2020.09.26 |
알고리즘104 :: BOJ_1766_문제집 (0) | 2020.09.26 |
알고리즘104 :: 최소 스패닝 트리(MST) (0) | 2020.09.24 |
댓글
이 글 공유하기
다른 글
-
알고리즘108 :: 구간합 (JAVA)
알고리즘108 :: 구간합 (JAVA)
2020.09.30 -
알고리즘107 :: 투포인트 - BOJ_수들의합2
알고리즘107 :: 투포인트 - BOJ_수들의합2
2020.09.28 -
알고리즘105 :: BOJ_2056_작업
알고리즘105 :: BOJ_2056_작업
2020.09.26 -
알고리즘104 :: BOJ_1766_문제집
알고리즘104 :: BOJ_1766_문제집
2020.09.26