[프래그래머스 알고리즘] 징검다리 건너기 JavaScript JS

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

😉문제 풀이 설명

이 문제는 이분탐색 문제 입니다.

이분 탐색 문제를 많이 접하지 않아서 이분 탐색 문제임을 알아차리는게 어려웠습니다.

1부터 2억까지 숫자 중 하나의 값을 찾는 문제임을 캐치 한다면 이분 탐색으로 접근하는 방법을 떠올리지 않았을 까 생각합니다.

이분 탐색임을 인지한다면 문제 자체가 어렵진 않습니다.

아래의 코드를 확인해 주세요


😎문제 풀이 코드

function solution(stones, k) {
    let str = 1;
    let end = 200000000;
    while(str !== end){
        const mid = Math.floor((str+end)/2)
        let is_foward = true;
        let cnt = 0;
        
        for(let stone of stones){
            if(stone <= mid) cnt++
            else cnt = 0;
            if(cnt >= k){
                is_foward = false;
                break;
            }
        }
        
        if(is_foward) str = mid+1
        else end = mid
    }
    
    return str;
}