Java

[프로그래머스] 징검다리 건너기

프로버티기 2025. 3. 25. 18:38

문제

https://school.programmers.co.kr/learn/courses/30/lessons/64062

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

입출력

 

 


아이디어

몇 명이 지나가면 돌들이 버틸 수 있는가 

건널 수 있는 사람의 수를 정하고 

 

빠르게 그 명수의 사람이 가능한지 여부를 판단한다 

 

코드 

 

class Solution {
    public int solution(int[] stones, int k) {
        int answer = 0;
        // stones : 징검다리(디딤돌)
        int min = 1, max = 200_000_000;
        while(min <= max) {
            int mid = (min + max) / 2;
            if(canCross(stones, k, mid)) {
                min = mid + 1;
                answer = Math.max(answer, mid);
            }else {
                max = mid - 1;
            }
        }
        return answer;
    }

    static boolean canCross(int[] stones, int maxJump, int pplCnt) {
        int skip = 0;
        for(int stone : stones){
            if(stone - pplCnt < 0) {
                skip += 1;
            }else {
                skip = 0;
            }
            if(skip == maxJump){
                return false;
            }
        }
        return true;
    }
}

'Java' 카테고리의 다른 글

[백준] 1162 : 도로포장  (0) 2025.03.27
[프로그래머스] 연속된 부분 수열의 합  (0) 2025.03.26
[백준] 퇴사2  (0) 2025.03.24
[백준] 2011 : 암호코드  (0) 2025.03.24
[백준] 9084 : 동전  (0) 2025.03.24