정답에 대한 이진 탐색
결과를 추측하고 가능 여부를 확인합니다
정답에 대한 이진 탐색은(는) CoddyKit의 무료 Competitive Programming Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Competitive Programming Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Competitive Programming Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
추측하고 검증하세요
때로는 답을 직접 계산할 수 없지만 추측을 확인할 수는 있습니다. 답에 대해 이진 탐색을 하면 어려운 최적화 문제가 쉬운 검사 문제로 바뀝니다.
# guess X, ask: is X feasible?핵심 속성
가능 여부가 단조일 때 작동합니다. 어떤 값이 가능하면 그보다 큰 값이나 작은 값도 모두 가능해야 합니다. 탐색하는 것은 바로 그 순서입니다.
# feasible(X) true => feasible(X+1) true답의 범위를 제한하세요
가능한 답 중 가장 작은 값과 가장 큰 값을 low와 high로 정하세요. 최소 용량 문제에서는 low가 원소 하나의 크기이고 high가 전체 합입니다.
low, high = max(weights), sum(weights)가능 여부 검사 작성
이 방법의 핵심은 추측한 X가 가능한 경우 true를 반환하는 can(X) 함수입니다. 이 함수는 보통 선형 시간에 실행됩니다.
def can(cap):
# simulate and return True/False
...예시: D일 안에 배송하기
하루 처리 용량 cap이 주어지면 매일 탐욕적으로 항목을 채우고 필요한 날 수를 세세요. 날 수가 제한 D 이내로 유지될 때 can(cap)은 true입니다.
def can(cap):
days, load = 1, 0
for w in weights:
if load + w > cap:
days += 1; load = 0
load += w
return days <= D최소 용량을 탐색하세요
조건을 통과하는 가장 작은 cap을 찾아야 합니다. 이는 용량에 대한 첫 true 탐색이므로 high = mid 템플릿을 재사용하세요.
while low < high:
mid = (low + high) // 2가능한 절반을 유지하세요
can(mid)가 true라면 더 작은 용량도 가능할 수 있으므로 high = mid로 설정하세요. 그렇지 않으면 low = mid + 1로 하한을 높이세요.
if can(mid):
high = mid
else:
low = mid + 1시간 예산을 고려하세요
총 비용은 O(검사 횟수 × 로그 범위)입니다. 범위가 10억만큼 넓어도 선형 검사는 약 30번뿐이므로 엄격한 제한에서도 충분히 빠릅니다.
# log2(1e9) is about 30 iterations최소화 대신 최대화하세요
가장 큰 가능 값을 찾으려면 논리를 뒤집어 마지막 true를 탐색하세요. 가능하면 low를 올리고, 불가능하면 high를 줄입니다.
if can(mid):
low = mid
else:
high = mid - 1실수 답
실수형 답을 구할 때는 정수 mid 대신 100번처럼 정해진 횟수만큼 반복하세요. 매번 구간이 절반으로 줄어들어 매우 높은 정밀도에 빠르게 도달합니다.
for _ in range(100):
mid = (low + high) / 2패턴을 포착하세요
최소 중 최대, 최대 중 최소, 또는 가능한 가장 작은 k 같은 표현은 답에 대해 이진 탐색하라는 신호입니다. 이런 표현을 알아보는 감각을 기르세요.
# 'minimize the maximum' => search answer빠른 확인
답에 대한 이진 탐색을 언제 적용할 수 있는지 판단해 보세요.
복습: 답을 탐색하세요
이제 답의 범위를 정하고 가능 여부 검사를 작성하여 최솟값이나 최댓값을 이진 탐색할 수 있습니다. 어려운 문제도 추측하고 검증하는 문제로 바뀝니다. 🏆
자주 묻는 질문
“정답에 대한 이진 탐색” 강의는 무료인가요?
네 — “정답에 대한 이진 탐색” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Competitive Programming Academy 강의 전체를 잠금 해제할 수 있습니다. Competitive Programming Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“정답에 대한 이진 탐색”에서 뭘 배우나요?
결과를 추측하고 가능 여부를 확인합니다 브라우저에서 직접 실행하는 실습 코드로 Competitive Programming Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Competitive Programming Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Competitive Programming Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“정답에 대한 이진 탐색” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Competitive Programming Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Competitive Programming Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.