• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

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

24.03.03 16:38 작성 24.03.03 17:39 수정 조회수 108

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은 끝 지점에 돌아가서 해당 위치에서 최초의 인덱스로 돌아가면서 계산을 하기 위한 코드이기 때문에

 

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

 

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

 

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

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.04

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

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

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

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

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

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

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