6개의 댓글이 있습니다.
- 
					
					- 
							 
 4dimensionn
- 
							그럼 이런식으로 하면 안되나요? 
 if(group==0)return INF;
 if(group==1)return minError(idx,n-idx+1);
 if(idx==n) return 0;
 10년 전 link
 
- 
							
- 
					
					- 
							 
 4dimensionn
- 
							n에 도달했을때 group이 0이여도 0을 반환해야 한다는게 이해가 잘 가지않습니다. ㅜㅜ 
 10년 전 link
 
- 
							
- 
					
					- 
							 
 gomdolfather
- 
							group 이 1인 기저사례를 이미 처리하셨기 때문에 
 group이 0인 기저사례는 나오지 않습니다.
 idx가 n인 경우는 group이 최소 1이상인 경우만 나오게 됩니다.
 10년 전 link
 
- 
							
- 
					
					- 
							 
 gomdolfather
- 
							group이 0인 기저사례를 처리하도록 고친 코드입니다. int process(int idx, int group){ 
 if(idx==n+1) return 0;
 if(group==0)return INF;int& ret = cache[idx][group]; if(ret!=-1)return ret; ret = INF; for(int i=1;i+idx<=n+1;++i){ ret = min(ret,minError(idx,i)+process(idx+i,group-1)); } return ret;} 
 10년 전 link
 
- 
							
- 
					정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다. 


4dimensionn
제가 궁금한 부분은 process함수에서 기저사례를 처리할때
왜 idx==n 이부분을 먼저 처리 해야하는가 입니다.
idx가 n에 도달했다고 하더라도 group이 0이라면 묶을 수 있는 방법이 없으므로 INF를 반환해야 된다고 생각해서 처음에 idx==n을 처리하는부분이 없이 코드를 작성하고 제출하였더니 오답이 나왔습니다.
이 코드는 정답을 받은 코드인데 왜 저 부분에서 group예외를 처리하기전에 idx==n을 먼저 봐야하는지궁금합니다
10년 전