인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

남경태님의 프로필 이미지
남경태

작성한 질문수

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

6강 탑다운 DP - 상담 (#14501) 질문 있습니다!

해결된 질문

작성

·

176

·

수정됨

1

recur(idx) 함수의 첫 번째 if 문인 if (idx == N - 1) return 0; 에서 0을 리턴하는 이유가 궁금합니다.

제가 이해하기론 N - 1은 마지막 일자의 상담이고 마지막 일자의 상담에 걸린 경우 무조건 받는 것이 퇴사 전 돈을 더 많이 받기에 이득이라고 이해를 했는데요. 그렇다면 0을 리턴하는 것이 아닌 그 마지막날 상담에 받는 돈의 값을 리턴하는 게 맞는 게 아닌가 하는 생각이 들었습니다.

 

또한 idx > N - 1의 경우 dp 에 들어있는 돈의 값에 영향을 주면 안되므로 이 경우에는 if (idx > N - 1) return 0;  이지 않을까 하는 생각도 듭니다.

 

이런 의문점이 드는게 제가 문제를 잘 이해하지 못하고 접근하고 있는 것 아닌가 싶어서 질문드립니다~

 

요즘 쉬운 설명의 강의 너무 잘 듣고 있습니다~ 감사합니다!

답변 2

0

코딩 센세님의 프로필 이미지
코딩 센세
지식공유자

좋은 질문 감사합니다!

 

return 0을 하는 것은 상담으로 받는 돈을 받는 로직과 관계가 없습니다!

 

돈을 계산하는 로직은 return을 해서 돌아가면서, 어떤 경우의 수가 이득인가를 구분하는 아래 코드에서 계산됩니다 ㅎㅎ

 

recur(idx + table[idx][0], result + table[idx][1])

recur(idx + 1, result)

 

return 0은 끝 지점에 돌아가서 해당 위치에서 최초의 인덱스로 돌아가면서 계산을 하기 위한 코드이기 때문에

 

질문자님이 말씀하신 마지막날에 하루가 걸리고 돈을 받을 수 있는 상황에는 자연스럽게 위의 코드로 계산이 됩니다!

 

한번 코드 한번 더 읽어보시고 그래도 궁금증이 해결되지 않으시면 또 질문주세요!

 

정말 좋은 질문 감사합니다!

-1

안녕하세요, 인프런 AI 인턴입니다.

남경태님의 ‘[2주만에 통과하는 알고리즘 코딩테스트 (2024년)]’ 강의 관련하여 질문해주셨군요.

recur(idx) 함수의 첫 번째 if문과 관련한 질문이십니다.
if (idx == N - 1) return 0;에서 0을 반환하는 이유는, 보통 상담을 하루 이상 완료하는 데 시간이 걸리기 때문에 마지막 날에 새로운 상담을 시작할 경우 제 시간 내에 상담을 완료할 수 없어 상담을 시작하지 않는 것을 의미합니다. 그래서 상담을 시작하지 않으면 얻는 이익이 없기에 0을 반환합니다.

idx > N - 1의 경우, 상담 기간이 퇴사일을 넘어갔을 때를 처리하는 조건입니다. 마지막 날 이후에는 상담을 할 수 없으므로 추가 이익을 얻을 수 없기에 0을 반환하는 것이 맞습니다.

강의 내용에 대한 더 자세한 해석이나 궁금한 점은 남경태 강사님께 직접 문의하시거나 해당 강의의 Q&A 섹션을 활용하시면 좋을 것 같습니다.

강의를 꼼꼼히 듣고 이해하시려는 모습이 인상적입니다. 알고리즘이나 자료구조 학습에 있어 언제든 도움이 필요하시면 질문 주세요.

학습에 도움이 되시길 바라고, 좋은 결과 있으시길 바랍니다!

남경태님의 프로필 이미지
남경태

작성한 질문수

질문하기