def get_inspect_count(mid, times):
total = 0
for time in times:
total += mid // time
return total
def solution(n, times):
left, right = 0, 1000000000*1000000000
mid = (left + right) // 2
answer = 0
while left <= right:
inspected_count = get_inspect_count(mid, times)
if inspected_count >= n:
answer = mid
right = mid - 1
else:
left = mid + 1
mid = (left + right) // 2
return answer
print(solution(6, [7, 10]), 28)
이분탐색 알고리즘을 푼지가 오래되어 구조를 다른 것 안보고 떠올리는데 시간이 조금 걸렸다. 탈출 조건을 어떻게 줘야하나 고민했는데 만약 답을 충족한 상태라면, 그 답을 일단 저장해놓고, 범위를 줄여가며 계속 탐색하는 방식으로 진행하면된다.