🖇️ 문제 링크
📝 문제 분석
n보다 작은 징검다리가 k번 연속 나온다면 그 다음 사람은 징검다리를 건널 수 없습니다.
이를 만족하는 최대의 n을 구하기 위해서 이분탐색 최적화 결정문제로 해결했습니다.
⌨️ 코드
class Solution {
public int solution(int[] stones, int k) {
int ans = 0;
int lo = 0, hi = Integer.MAX_VALUE;
while(lo <= hi) {
int mid = (lo + hi) / 2;
if(isMove(mid, k, stones))
lo = mid + 1;
else
hi = mid - 1;
}
return lo - 1;
}
public boolean isMove(int n, int k, int[] stones) {
int cnt = 0;
for(int stone : stones) {
if(stone < n)
cnt++;
else
cnt = 0;
if(cnt == k)
return false;
}
return true;
}
}
Uploaded by Notion2Tistory v1.1.0