inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

6주차 개념 #1. 이분탐색(Binary Search)

6주차_개념 강의 질문

해결된 질문

246

이효민

작성한 질문수 25

0

개념 강의에서 2792_보석상자 문제 중 check 함수의 기능을 이해 못했습니다. check함수의 기능이 무엇인지 설명해주실 수 있나요?

 

check 리턴 값이 1이면 왼쪽 부분 탐색, 0이면 오른쪽 부분 탐색을 하게끔 구현하신건가요?

 

제가 생각한 check 함수의 기능은 다음과 같습니다.

//현재 설정된 mid 값을 기준으로 보석을 학생들에게 나눠주었을 때, 몇명에게 나눠줄 수 있는지 num으로 측정

 

bool check(ll mid){

ll num=0; // 그룹 크기 담을 변수

for(int i=0; i<m; i++){

num+=a[i]/mid; // mid 값으로 나눠진 몫, 보석의 총 그룹 수

if(a[i]%mid) num++;// 나머지 있으면 추가 +1

}

return n>=num; -> 이 리턴 값의 의미를 모르겠습니다. 챗gpt로는 가장 많은 보석을 가진 학생의 보석 수가 n 이하인지를 판단하는 것 이라고 나오네요.. 왜 이런 값을 리턴하는지 궁금합니다.

}

c++ 코딩-테스트

답변 1

1

큰돌

안녕하세요 효민님 ㅎㅎ

이 문제는 6 - A 문제인데요.

이 문제는 질투심을 최소화하는 문제입니다.

이거를

=> 질투심이 ~ 일 떄 학생들이 같은 색상의 보석들을 가질 수 있나?

로 바꿔서 이분탐색으로 푼것이고 저 check함수의 매개변수는 질투심이 되는 것입니다.

 

image

그리고 질투심을 기반으로 학생을 감당하냐 못감당하냐를 확인하는데요.

예를 들어 질투심이 3이라면 학생의 수를 감당할 수 있습니다. 그러나 만약 질투심을 4라고 설정하면 앞의그림처럼 학생의 수는 3이 되기 때문에 만약 학생수가 5명이라면 해당 부분을 감당하지 못하게 되는 것이죠.

 

check 리턴 값이 1이면 왼쪽 부분 탐색, 0이면 오른쪽 부분 탐색을 하게끔 구현하신건가요?

>> 네 맞습니다.

 

또한 해당 부분의 설명은 6 - A 강의에서 좀 더 자세히 설명하고 있으니 참고부탁드립니다.


 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

 

4 - A

0

8

1

코딩살구클럽 입장이 안됩니다

0

48

2

4-F 경우의 수 질문입니다.

0

30

2

코딩살구클럽 가입이 안됩니다.

0

63

2

살구 클럽에 대한 질문있습ㄴ디ㅏ

0

52

1

교안 158페이지 문의드립니다

0

43

2

코딩살구클럽 관련 건의사항

0

105

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

44

1

진행 방법 질문드립니다!

0

78

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

63

2

2주차 개념#12 트리 순회

0

32

2

백준사이트가 종료된다고 합니다.

0

307

2

백준 서비스 종료

9

943

1

sk 하이닉스 코테 대비

0

382

2

3-G 최댓값 질문

0

53

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

84

2

3-I 코드 질문드립니다.

0

63

2

3-N 질문 있습니다.

0

68

2

학습방법

0

105

2

4-H 질문 있습니다 (코드 리뷰)

0

68

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

179

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

71

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

65

2

1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.

0

52

2