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

정윤교님의 프로필 이미지
정윤교

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

7-W

7-W 2342 질문있습니다.

작성

·

36

0

http://boj.kr/d480df7fada948b4a9ace782c2532e66

 

선생님과 비슷한 코드를 작성한거 같은데 답이 안 나오는 이유를 잘모르겠습니다...

그리고 이 문제의 경우 최솟값을 찾는 경우이므로 dp배열을 답이 될 수 없는 가장 큰 수로 초기화를 하지 않는 이유가 궁금합니다!

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 윤교님 ㅎㅎ

	int &ret = dp[idx][left][right];
	if(ret!=-1) return ret;
	ret = 987654321;

제 코드에서 -> 큰수로 초기화는 진행합니다.

 

int go(int depth, int left, int right) {
	if (depth == v.size()) return 0;

	int& ret = dp[depth][left][right];

처음에 -1을 매개변수로 넣게 되면 배열 인덱스에 -1이 들어가게 됩니다. 이부분 때문에 틀린 것 같습니다.

 

dp문제를 탑다운(재귀) 방식으로 풀이 할 때 디버깅 코드

>> 함수 호출부분에서 매개변수 출력, 그리고 메모이제이션이 잘됬나 배열의 요소를 확인하면 됩니다.

 

감사합니다.

0

정윤교님의 프로필 이미지
정윤교
질문자

아 그리고 혹시 dp문제를 탑다운(재귀) 방식으로 풀이 할 때 디버깅 코드는 보통 어떤 식으로 짜시는지 알려주시면 감사하겠습습니다.

정윤교님의 프로필 이미지
정윤교

작성한 질문수

질문하기