01-24 00:19
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[BAEKJOON] ๋ฐฑ์ค€ ์ด๋ถ„๊ฒ€์ƒ‰ 1654 :: ๋žœ์„  ์ž๋ฅด๊ธฐ ๋ณธ๋ฌธ

Algorithm/Baekjoon

[BAEKJOON] ๋ฐฑ์ค€ ์ด๋ถ„๊ฒ€์ƒ‰ 1654 :: ๋žœ์„  ์ž๋ฅด๊ธฐ

miinsun 2022. 4. 7. 17:47

 

๐Ÿ’ฌ  ๋ฌธ์ œ ์„ค๋ช…

์ง‘์—์„œ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋˜ ์˜ค์˜์‹์€ ๋ฐ•์„ฑ์›์˜ ๋ถ€๋ฆ„์„ ๋ฐ›๊ณ  ๊ธ‰ํžˆ ๋‹ฌ๋ ค์™”๋‹ค.
๋ฐ•์„ฑ์›์ด ์บ ํ”„ ๋•Œ ์“ธ N๊ฐœ์˜ ๋žœ์„ ์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด ๋ฐ”๋น ์„œ ์˜์‹์ด์—๊ฒŒ ๋„์›€์„ ์ฒญํ–ˆ๋‹ค.

์ด๋ฏธ ์˜ค์˜์‹์€ ์ž์ฒด์ ์œผ๋กœ K๊ฐœ์˜ ๋žœ์„ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ K๊ฐœ์˜ ๋žœ์„ ์€ ๊ธธ์ด๊ฐ€ ์ œ๊ฐ๊ฐ์ด๋‹ค.
๋ฐ•์„ฑ์›์€ ๋žœ์„ ์„ ๋ชจ๋‘ N๊ฐœ์˜ ๊ฐ™์€ ๊ธธ์ด์˜ ๋žœ์„ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— K๊ฐœ์˜ ๋žœ์„ ์„ ์ž˜๋ผ์„œ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 300cm ์งœ๋ฆฌ ๋žœ์„ ์—์„œ 140cm ์งœ๋ฆฌ ๋žœ์„ ์„ ๋‘ ๊ฐœ ์ž˜๋ผ๋‚ด๋ฉด 20cm๋Š” ๋ฒ„๋ ค์•ผ ํ•œ๋‹ค. (์ด๋ฏธ ์ž๋ฅธ ๋žœ์„ ์€ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค.)
ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋žœ์„ ์„ ์ž๋ฅด๊ฑฐ๋‚˜ ๋งŒ๋“ค ๋•Œ ์†์‹ค๋˜๋Š” ๊ธธ์ด๋Š” ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, ๊ธฐ์กด์˜ K๊ฐœ์˜ ๋žœ์„ ์œผ๋กœ N๊ฐœ์˜ ๋žœ์„ ์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฅผ ๋•Œ๋Š” ํ•ญ์ƒ ์„ผํ‹ฐ๋ฏธํ„ฐ ๋‹จ์œ„๋กœ ์ •์ˆ˜๊ธธ์ด๋งŒํผ ์ž๋ฅธ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

N๊ฐœ๋ณด๋‹ค ๋งŽ์ด ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ N๊ฐœ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ํฌํ•จ๋œ๋‹ค. ์ด๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋žœ์„ ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

๐Ÿ”จ  ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ 

  • ์ฒซ์งธ ์ค„์—๋Š” ์˜ค์˜์‹์ด ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋žœ์„ ์˜ ๊ฐœ์ˆ˜ K, ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๋žœ์„ ์˜ ๊ฐœ์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค.
  • K๋Š” 1์ด์ƒ 10,000์ดํ•˜์˜ ์ •์ˆ˜์ด๊ณ , N์€ 1์ด์ƒ 1,000,000์ดํ•˜์˜ ์ •์ˆ˜์ด๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ K โ‰ฆ N ์ด๋‹ค. ๊ทธ ํ›„ K์ค„์— ๊ฑธ์ณ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ ๋žœ์„ ์˜ ๊ธธ์ด๊ฐ€ ์„ผํ‹ฐ๋ฏธํ„ฐ ๋‹จ์œ„์˜ ์ •์ˆ˜๋กœ ์ž…๋ ฅ๋œ๋‹ค.
  • ๋žœ์„ ์˜ ๊ธธ์ด๋Š” 231-1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ

  • ์ฒซ์งธ ์ค„์— N๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋žœ์„ ์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์„ผํ‹ฐ๋ฏธํ„ฐ ๋‹จ์œ„์˜ ์ •์ˆ˜๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

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

4 11
802
743
457
539

 

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

200

โ€‹

 

๐Ÿ’ป  Main.java

  • ์ด๋ถ„๊ฒ€์ƒ‰, ๊ฒฐ์ •์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ๋‹ค.
  • lt์™€ rt๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€, mid๊ฐ’์„ ์กฐ์ •ํ•ด์ค€๋‹ค.
  • mid๊ฐ’์ด int๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜๋„ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐํ˜•์€ long์œผ๋กœ ํ•ด์คฌ๋‹ค.
/* ๋ฐฑ์ค€ ๊ทธ๋ž˜ํ”„ - 1654 :: ๋žœ์„  ์ž๋ฅด๊ธฐ */

import java.util.*;
import java.io.*;

public class Main {	
	static public long count (int[] arr, long mid) {
		long cnt = 0;
		
		// ํ•œ ์ „์„ ์„ ๋ช‡๊ฐœ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”์ง€ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค.
		for(int x : arr) {
			cnt += x / mid;
		}
		return cnt;
	}
	
	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);
		int k = sc.nextInt();
		int n = sc.nextInt();
		
		// ๋žœ์„  ๊ฐ’ ์ž…๋ ฅ
		int [] arr = new int [k];
 		for(int i = 0; i < k; i++) {
			arr[i] = sc.nextInt();
		}
 		
 		// ๋ฐฐ์—ด ์ •๋ ฌ, lt,rt ์ดˆ๊ธฐํ™”
 		Arrays.sort(arr);
 		long lt = 1;
 		long rt = arr[k-1];
 		long answer = 0;
 		
 		// ์ด๋ถ„ ํƒ์ƒ‰ (๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜)
		while(lt <= rt) {
			long mid = (lt + rt) / 2;
			// count()๋Š” ์œ ํšจ๊ฐ’์„ ์ฐพ๋Š” ํ•จ์ˆ˜
			if(count(arr, mid) >= n) {
				answer = mid;
				// ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ์œ ํšจ๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋ฒ”์œ„๋ฅผ ๋„“ํ˜€์ค€๋‹ค.
				lt = mid + 1;
			}
			else
				rt = mid - 1;
		}
		
		System.out.println(answer);
		sc.close();
	}
}
Comments