Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 동적계획법
- 알고리즘
- 문제풀이
- 게임서버
- ManagedRanguage
- BOJ
- dp
- Java
- UnmanagedRanguage
- 백준
- DynamicProgramming
- C/C++
- RALL
- Memozation
Archives
- Today
- Total
devStory
[BOJ] #DP - 9607번 Generations of Tribbles (JAVA) 본문
문제 출처 : https://www.acmicpc.net/problem/9507
기존 피보나치보다 조금 더 복잡한 피보나치를 구현하는 문제.
오늘 정리한 다이나믹 프로그램을 적용하기에 딱 좋은 기초 문제였다.
입력 첫 줄에 테스트 케이스 수가 주어진다 하여 MEMOZATION 기법을 이용 할 목적으로 전역 변수를 선언 하였다.
static long[] fib = new long[68];
<참고>
int는
-2147483648 ~ 2147483647
long은
-9223372036854775808 ~ 9223372036854775807
다음으로 SOLUTION 함수를 작성 하였다. 기존의 B0TTOM-UP 방식으로 피보나치를 구현하는 것과 동일한 짜임(?)이다.
public static long koong(int n){
if(fib[n] != 0){
return fib[n];
}
fib[0] = 1;
fib[1] = 1;
fib[2] = 2;
fib[3] = 4;
for(int i = 4; i <= n; i ++) {
fib[i] = fib[i-1] + fib[i-2] + fib[i-3] + fib[i-4];
}
return fib[n];
}
아래는 전체 코드이다.
그런데 문제 풀이 후 다른 사람의 코드를 보고서는 아차 싶었다 ㅠㅠ
바로 저 KOONG 함수를 한번만 사용 해도 된다는점!
애초에 피보나치 수열을 67번째 값 까지 한번만 구해 두고 그 다음 테스트 케이스를 받아서 N번째 인덱스를 출력하기만 하면 더 간단하게 해결 할 수 있었다...
분발해야지 ㅠㅠ
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[BOJ] #탐색 - 2798번 블랙잭 (C++11) (0) | 2019.08.30 |
---|---|
[BOJ] #DP - 11727번 2 x n 타일링2 (JAVA) (0) | 2018.09.26 |
[BOJ] #DP - 9095번 1,2,3 더하기 (JAVA) (0) | 2018.09.25 |
Comments