공부/2024 항해99코딩클럽
99클럽 3기 코테 스터디 14일차 TIL /[프로그래머스] 징검다리
푸딩코딩
2024. 8. 4. 23:07
728x90
반응형
1. 오늘의 학습 문제
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43236
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
import java.util.*;
class Solution {
public int solution(int distance, int[] rocks, int n) {
int answer = 0;
Arrays.sort(rocks);
int left = 1;
int right = distance;
while(left <= right){
int mid = (left + right)/2;
if(getRemovedRockCnt(rocks, mid, distance) <= n){
answer = mid;
left = mid + 1;
} else {
right = mid - 1;
}
}
return answer;
}
public int getRemovedRockCnt(int[] rocks, int mid, int distance){
// mid가 바위(지점) 간 최소 거리가 되어야 함
// 그렇게 하기 위해 제거 해야할 바위의 개수를 리턴한다.
int before = 0;
int end = distance;
int removeCnt = 0;
for(int i = 0; i < rocks.length; i++){
if(rocks[i] - before < mid) {
removeCnt++;
continue;
}
before = rocks[i];
}
if(end - before < mid) removeCnt++;
return removeCnt;
}
}
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL
728x90
반응형