문제
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 |