๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€ ์Šคํ„ฐ๋”” 1์ฃผ์ฐจ] 16564๋ฒˆ ํžˆ์˜ค์Šค ํ”„๋กœ๊ฒŒ์ด๋จธ ์‹ค๋ฒ„1 - ์ž๋ฐ”(JAVA) / ์ด๋ถ„ํƒ์ƒ‰

๐Ÿ“‘ ๋ฌธ์ œ

https://www.acmicpc.net/problem/16564

 

16564๋ฒˆ: ํžˆ์˜ค์Šค ํ”„๋กœ๊ฒŒ์ด๋จธ

์ฒซ์งธ ์ค„์—๋Š” ์บ๋ฆญํ„ฐ์˜ ๊ฐœ์ˆ˜ N, ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ ˆ๋ฒจ ์ดํ•ฉ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤1,000,000, 1 ≤ K ≤ 1,000,000,000) ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ํ˜„์žฌ ๊ฐ ์บ๋ฆญํ„ฐ์˜ ๋ ˆ๋ฒจ์ด X1, X2, X3, ... , Xn ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ X

www.acmicpc.net

๋”๋ณด๊ธฐ

๋ฌธ์ œ

์„ฑ๊ถŒ์ด๋Š” Heroes of the Storm ํ”„๋กœ๊ฒŒ์ด๋จธ ์ง€๋ง์ƒ์ด๋‹ค.

์ด ๊ฒŒ์ž„์—๋Š” ์ด N๊ฐœ์˜ ์บ๋ฆญํ„ฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ๊ฐ ์บ๋ฆญํ„ฐ์˜ ๋ ˆ๋ฒจ์€ Xi์ด๋‹ค. ์„ฑ๊ถŒ์ด๋Š” ์•ž์œผ๋กœ ๊ฒŒ์ž„์ด ๋๋‚  ๋•Œ๊นŒ์ง€, ๋ ˆ๋ฒจ์„ ์ตœ๋Œ€ ์ดํ•ฉ K๋งŒํผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

ํŒ€ ๋ชฉํ‘œ๋ ˆ๋ฒจ T =min(Xi) (1 ≤ i ≤ N)๋ผ๊ณ  ์ •์˜ํ•˜๋ฉด, ๊ฒŒ์ž„์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์„ฑ๊ถŒ์ด๊ฐ€ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํŒ€ ๋ชฉํ‘œ๋ ˆ๋ฒจ T๋Š” ๋ฌด์—‡์ธ๊ฐ€?

์˜ˆ๋ฅผ ๋“ค์–ด, N = 3, X1= 10, X2= 20, X3= 15์ด๊ณ  K = 10์ผ ๋•Œ, X1์„ 7๋งŒํผ ์˜ฌ๋ฆฌ๊ณ  X3์„ 2๋งŒํผ ์˜ฌ๋ฆฌ๋ฉด ์ตœ์†Œ ๋ ˆ๋ฒจ Xi๋Š” 17์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํŒ€ ๋ชฉํ‘œ๋ ˆ๋ฒจ T๋Š” 17์ด๋‹ค. ์ด ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๋ ˆ๋ฒจ์„ ์ดํ•ฉ K๋ณด๋‹ค ์ ๊ฒŒ ์˜ฌ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์บ๋ฆญํ„ฐ์˜ ๊ฐœ์ˆ˜ N, ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ ˆ๋ฒจ ์ดํ•ฉ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤1,000,000, 1 ≤ K ≤ 1,000,000,000)

๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ํ˜„์žฌ ๊ฐ ์บ๋ฆญํ„ฐ์˜ ๋ ˆ๋ฒจ์ด X1, X2, X3, ... , Xn ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Xi ≤ 1,000,000,000)

 

์ถœ๋ ฅ

๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ํŒ€ ๋ชฉํ‘œ๋ ˆ๋ฒจ T๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

 

 

 

โœ’๏ธ ํ’€์ด

 ์ „ํ˜•์ ์ธ ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ์ด๋‹ค.

 ๊ณต์œ ๊ธฐ์„ค์น˜(https://eijun.tistory.com/275)์™€ ๋‚˜๋ฌด์ž๋ฅด๊ธฐ(https://eijun.tistory.com/276) ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.

 ์„ค๋ช…์€ ์ƒ๋žตํ•œ๋‹ค.

 

 

 

 

 

 

 

๐Ÿ™‹‍โ™€๏ธ ์˜๊ฒฌ

 ์ด๋ฒˆ ์Šคํ„ฐ๋””์—์„œ ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ๋งŒ์„ ๊ณจ๋ผ ํ’€์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋ ˆ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ’€์—ˆ์ง€๋งŒ, ๋ฌธ์ œ ์œ ํ˜•์„ ํŒŒ์•… ๋ชปํ–ˆ๋‹ค๋ฉด ์ ‘๊ทผํ•˜๋Š”๋ฐ ๋‚œํ•ญ์„ ๊ฒช์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

 ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ๋ผ๋Š” ์‚˜์„ ๋ฐ›๋„๋ก ์ž์ฃผ ๋“ค์—ฌ๋‹ค ๋ด์•ผ๊ฒ ๋‹ค.

 

 

 

 

 

 

 

๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ: ์ž๋ฐ”(Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main_๋ฐฑ์ค€_16564_ํžˆ์˜ค์Šคํ”„๋กœ๊ฒŒ์ด๋จธ_์‹ค๋ฒ„1 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());//์บ๋ฆญํ„ฐ๋“ค ๊ฐœ์ˆ˜
		int K = Integer.parseInt(st.nextToken());//์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ ˆ๋ฒจ ์ดํ•ฉ
		int[] levels = new int[N];//์บ๋ฆญํ„ฐ๋ณ„ ๋ ˆ๋ฒจ
		for (int i = 0; i < N; i++) {
			levels[i] = Integer.parseInt(br.readLine());
		}//input
		Arrays.sort(levels);
		
		int result = 0;
		int left = levels[0];
		int right = levels[N-1];
		while(left<=right) {
			int mid = (left+right)/2;
			long sum = 0;
			for (int i = 0; i < N; i++) {
				if(levels[i]<mid) sum += (mid-levels[i]);
			}
			if(sum<=K) {
				result = mid;
				left = mid+1;
			}else {
				right = mid-1;
			}
		}
		System.out.println(result);
	}//end of main
}//end of class

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ