[leetcode]1552. magnetic force between two balls JAVA풀이

Bong2·2024년 6월 20일
0

알고리즘

목록 보기
37/63

문제 - 1552

문제설명


1. position 배열에 해당 baskets의 위치가 저장되어있다.
2. m개의 볼을 basket에 넣어야된다.
3. basket에 넣으면 해당 볼의 거리만큼 자기장이 생긴다. 이 자기장을 최대로 만들 수 있는 결과를 출력

문제접근

어제와 같이 이진탐색문제이다. 그래서 자기장의 거리를 기준으로 처음과 끝을 정해준다. 거리는 최소 1이며 최대 1000000000이여서 이로 설정.
해당 거리했을 때 m개의 볼을 넣을 수 있는지를 판단하여 거리를 조절해준다.

import java.util.*;

class Solution {
    public int maxDistance(int[] position, int m) {
        int ans=0,start=1,end = 1000_000_000;
        Arrays.sort(position);

        while(start <= end)
        {
            int mid = (start + end)/2;
            if(isCanPutBall(position,m,mid))
            {
                start = mid +1;
                ans = Math.max(ans,mid);
            }else{
                end = mid -1;
            }
        }

        return ans;
    }

    boolean isCanPutBall(int[] position,int m,int k)
    {
        int count =1;
        int preV = position[0];

        for(int i=1; i< position.length; i++)
        {
            int cnt = position[i];

            if(cnt - preV >= k)
            {
                count++;
                preV = cnt;
            }
        }

        return count >= m;
    }
}
profile
자바 백엔드 개발자로 성장하자

0개의 댓글