sesdesa   6년 전

안녕하세요 저의 코드는 다음과 같습니다. 저는 현재 알고리즘을 막 시작한터라 많이 부족한데요...!!

다른 분들의 코드를 보면 굉장히 간결하고 dp 알고리즘의 다른 분들의 코드들을 보면 항상 배열을 사용하시더라구요...!!

저는 아직 초보라서 그런지 왜 배열이 필요한지 감이 오질 않고 무작정 재귀로 풀려고 하는 습성이 있는 것 같습니다.

다른 문제를 풀 때 한번은 재귀가 아닌 반복문을 통해 한 번 풀어보았는데 역시나 이 문제도 재귀로 풀고 반복문으로는 어떻게 풀어야할지 감이 잘 오질 않네요..!! 

또한 여러 질문글들을 찾아보면 메모리제이션이라고 이전 값을 저장하시는 것 같더라구요?!  정확히 와닿지가 않더라구요 사실 아직은..!!

재귀의 속도 문제인 것 같은데 저의 코드가 어떻게 잘못되었는지와  앞으로 dp문제를 어떻게 접근을 해야할까요?

제 코드가 완전히 잘못된 코드일까요..? 결과는 정상적으로 나오는 것 같습니다. (물론 알고리즘을 풀 때 과정이 중요한 것 같습니다만..!)


jh05013   6년 전

답을 f(n)이라고 할 때, f(n) = f(n-1) + f(n-2) 입니다.

단순 재귀로 위를 구현하면 시간초과가 나는데, 같은 함수가 수없이 많이 실행되기 때문입니다. 그런데 이 함수는 언제 실행해도 같은 값을 반환하므로 한 번 계산한 값을 저장해 놓음으로써 시간을 절약할 수 있습니다. 이것이 다이나믹 프로그래밍입니다. 자세한 것은 아래 링크가 잘 설명하는 것 같습니다.

http://kks227.blog.me/22077710...

댓글을 작성하려면 로그인해야 합니다.