in.add()

[64062] 징검다리 건너기 본문

Algorithm/Programmers

[64062] 징검다리 건너기

idan 2021. 9. 27. 22:00

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64062

 

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

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

programmers.co.kr

 

문제 해결 방법

이진 탐색으로 최대 몇 명이 건널 수 있는지 검사한다.

 

mid값 수 만큼의 니니즈 친구들이 징검다리를 건넜을 때 더 이상 밟을 수 없는 돌의 개수가 k 개라면 실패.

-> max 값을 줄여준다.

k개 미만이라면 성공.

-> min 값을 늘려준다.

 

class Solution {
    public int solution(int[] stones, int k) {
        int answer = 0;
        int min = 1;
        int max = 200000000;
        
        while(min <= max) {
            int mid = (min + max) / 2;
            int cnt = 0;
            for(int i = 0; i < stones.length; i++) {
                if(stones[i] - mid <= 0) cnt++;
                else cnt = 0;
                
                if(cnt == k) break;
            }
            if(cnt == k) {
                max = mid - 1;
            } else {
                min = mid + 1;
            }
        }
        return min;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

[1844] 게임 맵 최단거리  (0) 2021.10.16
[83201] 2주차_상호평가  (0) 2021.10.08
[84512] 5주차_모음사전  (0) 2021.09.15
[42883] 큰 수 만들기  (0) 2021.09.14
[42746] 가장 큰 수  (0) 2021.09.13
Comments