๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋งˆ๊ตฌ๊ฐ„ ์ •ํ•˜๊ธฐ(๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜) ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋งˆ๊ตฌ๊ฐ„ ์ •ํ•˜๊ธฐ(๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜)

์š”์ผ์ด 2021. 6. 28. 02:12
๋ฐ˜์‘ํ˜•

์„ค๋ช…

N๊ฐœ์˜ ๋งˆ๊ตฌ๊ฐ„์ด ์ˆ˜์ง์„ ์ƒ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋งˆ๊ตฌ๊ฐ„์€ x1, x2, x3, ......, xN์˜ ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋งˆ๊ตฌ๊ฐ„๊ฐ„์— ์ขŒํ‘œ๊ฐ€ ์ค‘๋ณต๋˜๋Š” ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค. ํ˜„์ˆ˜๋Š” C๋งˆ๋ฆฌ์˜ ๋ง์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๋ง๋“ค์€ ์„œ๋กœ ๊ฐ€๊นŒ์ด ์žˆ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ๋งˆ๊ตฌ๊ฐ„์—๋Š” ํ•œ ๋งˆ๋ฆฌ์˜ ๋ง๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ณ , ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‘ ๋ง์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋˜๊ฒŒ ๋ง์„ ๋งˆ๊ตฌ๊ฐ„์— ๋ฐฐ์น˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

C๋งˆ๋ฆฌ์˜ ๋ง์„ N๊ฐœ์˜ ๋งˆ๊ตฌ๊ฐ„์— ๋ฐฐ์น˜ํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‘ ๋ง์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ๊ทธ ์ตœ๋Œ€๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

์ž…๋ ฅ

์ฒซ ์ค„์— ์ž์—ฐ์ˆ˜ N(3<=N<=200,000)๊ณผ C(2<=C<=N)์ด ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋‘˜์งธ ์ค„์— ๋งˆ๊ตฌ๊ฐ„์˜ ์ขŒํ‘œ xi(0<=xi<=1,000,000,000)๊ฐ€ ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์ถœ๋ ฅ

์ฒซ ์ค„์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‘ ๋ง์˜ ์ตœ๋Œ€ ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•˜์„ธ์š”.

์˜ˆ์‹œ ์ž…๋ ฅ 1 

5 3 1 2 8 4 9

์˜ˆ์‹œ ์ถœ๋ ฅ 1

3

 

 

import java.util.*;

class Main {
	
	public int count(int[] arr, int dist) {
		int cnt = 1;
		int ep = arr[0];
		
		for(int i=1; i<arr.length; i++) {
			if(arr[i]-ep >=dist) {
				cnt ++;
				ep= arr[i];
			}
		}
		
		return cnt;
	}
	
	
	public void solution(int n, int c, int[] arr) {
		
		int answer = 0;
		Arrays.sort(arr);
		int lt = 1;
		int rt = arr[n-1];
		while(lt<=rt) {
			int mid = (lt+rt)/2;
			if(count(arr, mid) >= c) {
				answer = mid;
				lt = mid+1;
			}else {
				rt = mid-1;
			}
		}
		 
		System.out.println(answer);
	};
	
	public static void main(String args[]) {
		
		Main main = new Main();
		Scanner in = new Scanner(System.in);
		
		int N = in.nextInt();
		int M = in.nextInt();
		
		int[] arr = new int[N];
		
		for(int i=0; i<N; i++) {
			arr[i] = in.nextInt(); 
		}
		
		main.solution(N, M, arr);
		 
    }

}
Comments