말랑한 하루

[Programmers] 징검다리 (Lv 3, JavaScript) 본문

문제풀이/Programmers

[Programmers] 징검다리 (Lv 3, JavaScript)

지수는말랑이 2022. 9. 22. 17:35
반응형

[ 학습 내용 ]
이분탐색은 이론은 쉽게 이해할 수 있다. 그러나, 무엇을 기준으로 어떤 결과를 얻어야하며, 그 결과를 얻을 때 검증이 필요한지 판단하는 것이 중요하고 결과에 다다르기 위해 어떻게 변수를 조정할 지 생각해야 하는것이 까다롭다.


[ 소스 코드 ]

function solution(stones, k) {
    var left = 1, right = 200000000;
    
    const checkBridge = (mid) => {
        var cnt = 0;
        for(let i = 0; i < stones.length; i++) {  
            cnt = stones[i] < mid ? cnt + 1 : 0;
            if (cnt >= k) return false;
        } 
        return true;
    }

    while(left <= right) {
        let mid = (left + right) / 2 >> 0;
        checkBridge(mid) ? left = mid + 1 : right = mid - 1;
    }

    return right;
}

[ 코드 분석 ]

이 문제의 경우, 징검다리를 기준으로 최대 몇명의 친구들이 건널 수 있는지 요구하는 문제이며

해당 결과를 얻기 위해서는, 징검다리가 최소 k개 떨어져 있어야 친구 1명이 건널 수 있다.

반응형
Comments