def solution(stones, k):
result = 0
left, right = 1, max(stones)
while left <= right:
mid = left + (right - left) // 2
skipped_stone = 0
flag = True
for stone in stones:
if stone < mid:
skipped_stone += 1
if skipped_stone == k:
flag = False
else:
skipped_stone = 0
if flag:
result = mid
left = mid + 1
else:
right = mid - 1
return result
문제 풀이에 이진 탐색을 떠올리는 것이 중요하다. 주어진 조건의 범위가 무지막지하게 클 경우 바로 의심을 해보자.
입국 심사 문제 또한 이 문제와 비슷한 조건과 풀이 형태를 가진다.