ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[프로그래머스] 2019 카카오 개발자 겨울 인턴십 징검다리 건너기 java

SZCODE 2021. 4. 6. 22:57

programmers.co.kr/learn/courses/30/lessons/64062

 

코딩테스트 연습 - 징검다리 건너기

[2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3

programmers.co.kr

class Solution {
	public int solution(int[] stones, int k) {
        int answer = 0, left = 0, right = Integer.MAX_VALUE;
        
        while(left <= right) {
        	int mid = (left+right)/2;
        	
        	if(check(mid,k,stones)) {//mid 값으로 징검다리를 건널 수 있다면, 그보다 작은 값 다건넘
        		left = mid+1;//mid+1 부터 다시 탐색
        		answer = mid;
        	}
        	else right = mid-1;//mid 값으로 징검다리 건널 수 없다면 그보다 큰 값 x, mid-1
        }
        return answer;
    }

	public boolean check(int mid, int k, int[] stones) {
		int count = 0;
		for(int stone : stones) {
			if(stone < mid) {//stones 요소가 mid보다 작으면
				count++;
				if(count>=k) return false;//건널수 없음
			}
			else count = 0;
		}
		return true;
	}
}