학생 마다 매번 징검다리를 시뮬레이션하면 끝이 없다.
stones
의 최댓값이 200,000,000 이고 배열의 길이가 200,000 이므로 시간초과난다. 바로 여기서 이분탐색 아이디어를 떠올릴 수 있다
def CrossTest(stones, k, T):
count = 0 # 연속으로 징검다리 돌의 값이 0인 개수
ret = True
for stone in stones:
if stone < T:
count += 1
else:
count = 0
if count == k:
ret = False
break
return ret
def solution(stones, k):
answer = 0
N = len(stones)
start, end = 0, 200000000
while start <= end:
mid = (start + end) // 2
if CrossTest(stones, k, mid):
answer = mid
start = mid + 1
else:
end = mid - 1
return answer