4. 이분 탐색 시작 (left가 right보다 작거나 같을 때까지 반복)
- [1] 중간 길이(mid)를 구한다. -> (left + right) / 2
- [2] 현재 mid 길이로 모든 랜선을 잘랐을 때 나오는 [총 토막 수(count)]를 구한다.
(반복문을 돌며 각 랜선 길이 / mid 한 값을 모두 더함)
- [3] 조건 판단
만약, 만든 토막 수(count)가 목표(N) 이상이라면?
-> "성공! 일단 이 mid를 answer에 저장하자."
-> "더 길게도 자를 수 있는지 확인하기 위해 범위를 오른쪽으로 좁히자."
(left = mid + 1)
그외에, 토막 수가 부족하다면?
-> "실패! 너무 길게 잘랐으니 더 짧게 잘라야겠다."
-> "범위를 왼쪽으로 좁히자." (right = mid - 1)
5. 출력
- 반복문이 끝나고 최종적으로 저장된 answer(최대 랜선 길이)를 출력한다.
-----------------------------------------------------------------
반복 조건: left가 right보다 작거나 같을 때까지 (while (left <= right))
1. 중간 길이(mid) 계산하기
👉 (left + right)를 2로 나눈 값을 mid에 저장
2. 토막 개수(count) 구하기
👉 반복문(for)을 돌면서 각 랜선(arr[i])을 mid로 나눈 몫을 count에 누적(+=)하기
3. ★ 조건문 완성하기 힌트 (현재 지환이가 멈춘 곳!)
만약 ( 구한 토막개수가 목표개수 이상인가? ) {
👉 ( 힌트: count 와 N 을 비교 연산자 '>= ' 로 묶기 )
- 일단 현재 mid가 답이 될 수 있으므로 answer에 복사하기!
- 더 길게 잘라보기 위해 left 벽을 mid보다 1 칸 오른쪽으로 옮기기!
( 힌트: left = mid + ... )
}
아니라면 (개수가 부족하다면) {
- 너무 길게 잘랐으니 더 짧게 잘라야 함!
- right 벽을 mid보다 1 칸 왼쪽으로 당기기!
( 힌트: right = mid - ... )
}
To embed this project on your website, copy the following code and paste it into your website's HTML: