chemicat53   3년 전

preview

문제가 되는 코드는 아랫줄에 적어 두었습니다.


백준을 띄엄띄엄 풀다 보니 아직 많이 부족합니다.


이 문제를 Top down 형식으로 재귀를 사용하여 풀었으나,  제출에서 메모리 초과 에러가 뜹니다.

반복문을 사용한 bottomup형식은 에러가 뜨질 않는데, 그 이유는 대강 추측은 가능하나, 제대로 된 설명을 듣고싶어 질문올립니다.

추측건대, 코드의 dp함수는 n이 1000000인 경우에,

dp 함수 호출을 많이 하게 되어 메모리 초과가 나는것같은데, 어느정도까지 함수 콜을 해야 메모리 에러가 나질 않는건지, 궁금합니다.

메모리 제한이 128MB라고 했는데, 

1000001개의 int형 공간 + 함수 스택 공간 * int min1, min2를 위한 공간 > 128MB인건가요?

palilo   3년 전

dp(1)을 실행하면 모든 if문은 false니까 통과하고

18번 줄에서 dp(0)을 호출할겁니다

dp(0)은 13번 줄의 if문이 true므로 dp(0)을 호출할겁니다.

dp(0)은 13번 줄의 if문이 true므로 dp(0)을 호출할겁니다.

... 반복

sonjaewon   3년 전

재귀 종료조건이 잘모되었군요

chemicat53   3년 전

아...맞군요.

아직 한참 부족하네요..

답변 감사합니다. 

같은 문제 다시 실수하지 않도록 해야겠어요

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