인프런 커뮤니티 질문&답변
이런 코드는 어떤가요?
작성
·
32
0
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
solution(in.nextInt(), 1, 1, 0);
in.close();
}
public static void solution(int target, int start, int value, int prevValue) {
if (target >= start) {
System.out.print(value + " ");
solution(target, start + 1, value + prevValue, value);
}
}
}다음과 같이 풀어보았는데요, 재귀와 메모이제이션을 비슷하게 구현한것 같아서요.
이렇게 작성하면 어떨지 문의드려요!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
조영상님께서 작성해 주신 Java 코드를 살펴보았습니다. 이 코드는 재귀를 사용하여 간단한 수열을 계산하는 알고리즘이네요. 몇 가지 피드백을 드리자면:
재귀 함수 사용: 코드에서
solution메소드는 재귀적으로 값을 출력하는 것으로 보입니다. 이전 두 수의 합을 다음 수로 이용하는 방식입니다. 피보나치 수열과 비슷한 구조로 볼 수 있습니다.메모이제이션: 메모이제이션은 보통 이미 계산된 하위 문제의 답을 저장하고, 이를 필요할 때 빠르게 다시 사용하는 기법입니다. 이 코드에서는 메모이제이션이 적용되지 않고, 재귀 호출로만 해결되고 있습니다. 메모이제이션을 도입하려면 이전 결과를 저장하기 위한 배열이나 맵을 도입해야 합니다.
출력: 출력되는 수열이 어떤 수열인지 명확하지 않습니다. 이는 피보나치 수열과 유사해 보이므로, 어떤 수열을 나타내는 것인지 명확하게 하여 사용자가 이해할 수 있도록 설명하면 좋겠습니다.
개선 제안: 만약 메모이제이션을 추가하고 싶으시다면 값들을 저장하는 배열을 사용하여 같은 인덱스에 대해 재계산하지 않도록 변경할 수 있습니다.
코드 작성하신 것에 대한 추가적인 질문이나 수정이 필요하시면 자유롭게 문의주세요!
이미지 URL: Spring Boot Reference
Origin URL: Spring Boot Reference Origin





