๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
[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);
}
}
'๊ฐ๋ฐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA/์ฝ๋ฉํ ์คํธ] ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ์ด์ง์ ์ถ๋ ฅ (0) | 2021.07.13 |
---|---|
[JAVA/์ฝ๋ฉํ ์คํธ] ์ฌ๊ทํจ์ (0) | 2021.07.13 |
[JAVA/์ฝ๋ฉํ ์คํธ] ๋ฎค์ง๋น๋์ค(๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ) (0) | 2021.06.28 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์ด๋ถ๊ฒ์ (0) | 2021.06.27 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์ขํ ์ ๋ ฌ (0) | 2021.06.27 |