DP (Dynamic Programming)Algorithm & Data Structure2020. 10. 27. 21:18
Table of Contents
...에러는 그냥 올려보았다.
다이나믹 프로그래밍.
피보나치 처럼 재귀적으로 호출되는 함수.,,
큰 문제가 작은 문제들을 포함한 경우에 대해,
내가! 한 번 푼 문제는 ! 두번 다시 풀지 않겠다!
이미 푼 결괏 값은 배열 등의 데이터에 저장해두어 읽는다.
아래는 DP (Dynamic Programming)을 적용 전이다.
pivonachi를 적용 전이다.. 대강 약 2^50의 시간 계산을 한다.
public static void main(String[] args) {
long beforeTime = System.currentTimeMillis();
DP dp = new DP(50);
dp.getNum();
long afterTime = System.currentTimeMillis();
long secDiffTime = (afterTime - beforeTime);
System.out.println("시간차이(m): " + secDiffTime);
}
적용후!
ㅅ..ㅅㅂ
디버깅점..
dp.getNumByDP();
오오?..
이때 테스트할 수 있는 숫자는
Long형의 숫자의 표현 범위를 넘지 않는다.
이때의 피보나치로 표현 가능한 항의 넘버를 구해 보면...
피보나치 수열의 극한 값에 대한 증가율은 1.62 쯤 된다.
2^10은 천 정도, 1.62^10은 100정도 된다.
대략 100의 정도의 숫자에 대해 테스트해 볼 수 있다.
long beforeTime = System.currentTimeMillis();
DP dp = new DP(92);
dp.getNumByDP();
long afterTime = System.currentTimeMillis();
long secDiffTime = (afterTime - beforeTime);
System.out.println("시간차이(m): " + secDiffTime);
result: 7540113804746346429
시간차이(m): 0
흐음.......그러하다 시간차이가 거의 발생하지 않는다.
아까 DP(50)에 대해서는 2^50.. 약 1천조 번 계산했고 이건 약 92번이라서 그런가 보다..
그니까 10조배 차이 나는 거지..
'Algorithm & Data Structure' 카테고리의 다른 글
단기 코딩테스트 브론즈1에서 실버3까지 (0) | 2023.07.25 |
---|---|
파일 비교 알고리즘을 만들면서 참고한 자료들, (0) | 2020.10.27 |
Union-Find (합집합 찾기) (0) | 2020.10.27 |
알고리즘 테스트기 : Heap, Counting (0) | 2020.10.27 |
@philo0407 :: Philo의 다락방
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!