๋ฐฐ์ด ์์๋ฅผ ๋ณ์ ํ๋๋ฅผ ์ด์ฉํด์ ๊ณ์ ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ฉด ์ญ์ ์๊ฐ์ด๊ณผ๋ค .
์๊ฐ์ ๋จ์ถํ๊ธฐ ์ํด์ ์ด๋ถ๊ฒ์์ ์ด์ฉํด์ผ ํ๋ค.
sum < m ์ด๋ฉด , ๋ชฉํ๋์ ๋ถ์กฑํ๋๊น ๋ ๋ง์ด ์๋ผ์ผํจ -> rt ๊ฐ์
sum > m ์ด๋ฉด , ๋ชฉํ๋๋ณด๋ค ๋ง์๊ฑฐ๋ ๋ ์ ๊ฒ ์๋ผ์ผํจ -> lt ์ฆ๊ฐ
import java.util.*;
class Main {
public static void main(String args[]) throws Exception {
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int m=kb.nextInt();
int[] arr=new int[n];
int lt=0;
int rt=0;
// ์ต์ ๊ฐ lt : ์ต๋๊ฐ rt
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
rt=Math.max(rt,arr[i]);
}
while(lt<rt){
int mid=(lt+rt)/2;
long sum=0;
for(int x:arr){
if(x-mid>0){
sum+=x-mid;
}
}
if(sum<m){
rt=mid;
}
else{
lt=mid+1;
}
}
System.out.println(lt-1);
}
}
'๐ ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค & ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 0 : ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์ ( *DFS, ๋ฉ๋ชจ์ด์ ์ด์ ) (0) | 2022.12.09 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 0 : ๋ฌธ์์ด ๋ฐ๊ธฐ (0) | 2022.12.09 |
[๋ฐฑ์ค][JAVA]2231๋ฒ : ๋ถํดํฉ (0) | 2022.12.07 |
[๋ฐฑ์ค][JAVA]10816๋ฒ : ์ซ์ ์นด๋ 2 (0) | 2022.12.06 |
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 0 : ์ธ๊ณ์ด ์ฌ์ (0) | 2022.12.03 |