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

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

SEO님의 프로필 이미지
SEO

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

43번)뮤직비디오(이분검색 응용) 관련 질문있습니다!

작성

·

274

0

강사님께서 보여주신 코드를 보면,

 main함수속의 while문에서, 

if(Count(mid)<=m) {

      res = mid;

      rt  = mid - 1;

}

else

      lt  = mid + 1;

이렇게 코드를 구현하셨는데요,

제가 여기서 궁금한 점은, 

Count(mid)<=m 조건을 만족할때마다, res = mid; 이렇게 DVD의 용량 값을 업데이트를 해주고 있는데요, 저는 

Count(mid)==m 이렇게 작을경우는 말고, 오직 같을때만 업데이트를 해줘야한다고 생각하는데, 왜 강사님께서는 

사용자가 m개의 DVD를 사용하고 싶다고 했으면, 딱 m개일때만 DVD의 용량을 업데이트를 하지 않고, m보다 더 작은 개수가 나왔을때도, res = mid; 이렇게 DVD의 크기를 업데이트 해주는지 궁금합니다!

답변해주시면 감사하겠습니다!

 

답변 1

0

테스트케이스 중에 꼭 M개를 사용하지 않는 경우가 있어서 그런 것 같아요!

SEO님께서 말씀하신대로 count(mid)==m 같은 경우로만 한다면 in1 케이스가 wrong_answer이 납니다.

 

in1 은

n = 5, m = 4

1 1 1 1 1 이어서 정답이 2인데요,  (1) (1) (1) (1 1) 이렇게 4개를 할 수도 있지만

Count함수 쓰면 (1 1)(1 1) (1) 이렇게 3을 리턴할 것이라 

이것과 비슷한 경우를 대비하기 위해서 그렇게 된 것 같아요~

SEO님의 프로필 이미지
SEO
질문자

친절하고 자세한 답변 감사합니다!

만약에 그러면, m=4라고 지정을 해줬는데,

Count함수결과 계속 4를 만족하는 결과가 하나도 나오지 않을 경우에는 어떻게되는건가요??

SEO님의 프로필 이미지
SEO

작성한 질문수

질문하기