본문 바로가기
문제풀이

[프로그래머스] 2019 카카오 인턴십 4번 문제 징검다리 건너기 Java

by AndoneKwon 2021. 4. 15.
import java.io.*;

//parametric search이며 내가 탐색해야 할 범위를 반으로 줄여주는 방식으로 풀어야 한다.
//그것은 금방 했는데 정작 isOk를 n이 아니라 n^2으로 풀어서 계속 틀렸었다.. 그냥 false일때 0으로 초기화 시켜 주면 되는것을..
class Solution {
    boolean isOk(int[] stones, int max, int k) {
        int cnt = 0;
        for (int i = 0; i < stones.length; i++) {
            if(stones[i]<max) cnt++;
            else cnt=0;

            if(cnt>=k) return false;
        }
        return true;
    }

    public int solution(int[] stones, int k) {
        int answer = 0;

        int howMany = 0;
        int mid;
        int max = Integer.MAX_VALUE;

        while (howMany <= max) {
            mid = (max + howMany) / 2;

            if (isOk(stones, mid, k)) {
                answer = mid;

                howMany = mid + 1;
            } else max = mid - 1;
        }

        return answer;
    }
}

'문제풀이' 카테고리의 다른 글

[프로그래머스] 압축 java  (0) 2021.05.06
[백준] 퇴사2 Java  (0) 2021.04.15
[프로그래머스] 네트워크 Java  (0) 2021.04.13
[프로그래머스] 섬 연결하기 Java  (0) 2021.04.13
[프로그래머스] 타겟넘버 JAVA  (0) 2021.04.12