본문 바로가기

메모이제이션2

[프로그래머스] 피보나치 수 - 자바(Java), 메모이제이션 문제 https://programmers.co.kr/learn/courses/30/lessons/12945 풀이 n이 최대 100000이기 때문에 엄청나게 큰 수가 만들어지게 되어 일반적인 피보나치를 계산하는 로직으로는 오버플로우가 발생하게 된다. 그렇기 때문에 fibo[n]%1234567 = (fibo[n-1] + fibo[n-2])%1234567 식을 활용하여 코드를 작성한다. 또한 메모이제이션을 사용하여 시간 초과를 방지한다. import java.util.*; class Solution { int[] fibo; public int solution(int n) { fibo = new int[n+1]; return dfs(n); } private int dfs(int n) { if(fibo[n] > .. 2022. 1. 4.
[알고리즘] 7-4 피보나치 수열 - 재귀함수, 메모이제이션 (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) 인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 풀이 코드를 정리하고 있습니다. 문제 설명 : n이 입력되면 피보나치 수열 n개의 항을 출력 피보나치수열 : 앞의 2개의 수를 합하여 다음 숫자가 되는 수열(첫 번째와 두 번째 항은 1) 자료 구조 책에서 재귀를 설명할 때 흔히 볼 수 있는 문제로 보통 반복문 또는 재귀 두 가지 방법으로 풀이하는데 이번 문제에서는 재귀와 메모이제이션을 사용하여 풀이한다.(물론 속도는 반복문을 사용하는 쪽이 더 빠르다) 참고 : 반복문으로 푸는 방법 재귀를 사용한 풀이 package inflearn; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt.. 2021. 6. 13.