[Java]BOJ 1654 : ๋žœ์„  ์ž๋ฅด๊ธฐ

2025. 1. 15. 03:08ยทAlgorithm

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

๐Ÿšฉ๋ฌธ์ œ

๐Ÿ”“๋ฌธ์ œํ•ด๊ฒฐ (์ด๋ถ„ํƒ์ƒ‰)

1. ๋žœ์„  ๊ธธ์ด๋ฅผ int๋กœ ํ•˜์—ฌ ๊ณ„์‚ฐํ•˜๋ฉด ์ค‘๊ฐ„์— ํ•ด๋‹น ๋ฒ”์œ„๋ฅผ ๋„˜์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— long์œผ๋กœ ์„ ์–ธํ•œ๋‹ค.

2. ์‹œ์ž‘์‹œ์— (0+์ตœ๋Œ“๊ฐ’)/2๋กœ ํ•ด๋‹น ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„๊ฐ’์„ ๊ตฌํ•˜๊ณ  ๊ทธ ๊ฐ’์— ๋”ฐ๋ผ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„๊ฐ’์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅ๋ฐ›์€ ๋žœ์„ ๊ธธ์ด๋ฅผ ์ •๋ ฌ์„ ํ•ด์ค€๋‹ค.

3. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋žœ์„ ๋“ค์„ 2๋ฒˆ์—์„œ ๊ตฌํ•œ ์ค‘๊ฐ„๊ฐ’์œผ๋กœ ๊ฐ๊ฐ ๋‚˜๋ˆ„์–ด์„œ ๋ชซ์„ ๊ฒฐ๊ณผ๊ฐ’์— ๋”ํ•ด์ค€๋‹ค.

4.๊ฒฐ๊ณผ๊ฐ’์ด N(ํ•„์š”ํ•œ ๋žœ์„ ์˜ ์ˆ˜) ๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋‚˜๋ˆ ์•ผํ•˜๋Š” ๊ฐ’์ด ์ž‘์•„์•ผํ•˜๋Š”๊ฒƒ์ด๋ฏ€๋กœ ์ตœ๋Œ“๊ฐ’์„ ์ค‘๊ฐ„๊ฐ’-1์˜ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.

5. ๊ทธ๋ ‡๊ฒŒ ํ•„์š”ํ•œ ๋žœ์„ ์˜ ์ˆ˜๊ฐ€ ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ตœ์†Œ๊ฐ’์ด ์ตœ๋Œ“๊ฐ’๋ณด๋‹ค ์ปค์ง€๋ฉด ๋ฃจํ”„๋ฌธ์„ ํƒˆ์ถœํ•œ ํ›„ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค€๋‹ค. 

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

/*
* ์ž…๋ ฅ *
* ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋žœ์„ ์˜ ๊ฐœ์ˆ˜ K, ์จ์•ผํ•˜๋Š” ๋žœ์„ ์˜ ๊ฐœ์ˆ˜ N
* K์ค„์— ๊ฑธ์ณ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋žœ์„ ์˜ ๊ธธ์ด

* ์ถœ๋ ฅ *
* N๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋žœ์„ ์˜ ์ตœ๋Œ€ ๊ธธ์ด
*
* ๋ฌธ์ œํ•ด๊ฒฐ
* 1. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋žœ์„ ์˜ ๊ธธ์ด๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›๋Š”๋‹ค
* 2. ์ž…๋ ฅ๋ฐ›์€ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด ์ค€๋‹ค.
* 2. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋žœ์„  ๊ธธ์ด์˜ ์ตœ๋Œ“๊ฐ’์„ 2๋กœ๋‚˜๋ˆ„์–ด์„œ ์ค‘๊ฐ„๊ฐ’์„ ์ •ํ•œ๋‹ค.
* 3. ๊ฐ ๋ฐฐ์—ด์„ ๋Œ๋ฉด์„œ ์ค‘๊ฐ„๊ฐ’์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๋ชซ์„ ๋”ํ•ด์ค€๋‹ค.
* 4. ๋ฐฐ์—ด์„ ๋‹ค ๋Œ๊ณ  ๋”ํ•ด์ง„ ๋ชซ์ด n๋ณด๋‹ค ์ž‘์œผ๋ฉด , ๋‚˜๋ˆ ์•ผ ํ•˜๋Š” ๊ธธ์ด๊ฐ€ ๋” ์ž‘์•„์ ธ์•ผ ํ•˜๋Š”๊ฒƒ ์ด๋ฏ€๋กœ ์ตœ๋Œ“๊ฐ’์˜ ๊ธธ์ด๋ฅผ ์ค‘๊ฐ„๊ฐ’-1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
* ์ค‘๊ฐ„๊ฐ’์€ ์ด๋ฏธ ๊ณ„์‚ฐ๋œ์ ์ด ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๊ฐ’์˜ -1์„ ํ•ด์ค€๋‹ค.
*/
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String [] str = br.readLine().split(" ");
        int K = Integer.parseInt(str[0]);
        int N = Integer.parseInt(str[1]);

        int [] num = new int[K];
        long min ,max,mid;

        for(int i=0;i<K;i++){
            num[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(num);
        min = 1;
        max=num[K-1];


        while(min<=max){
            mid=(min+max)/2;
            long cnt = 0;
            for(int i=0;i<K;i++){
                cnt += num[i]/mid; //์ž˜๋ผ์ง„ ๋žœ์„  ๊ฐœ์ˆ˜
            }
//            ์ž˜๋ผ์ง„ ๋žœ์„ ๊ฐœ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์ตœ๋Œ€๊ธธ์ด๊ฐ€ ๋” ์งง์•„ ์ ธ์•ผํ•œ๋‹ค.
            if(cnt<N){
                max=mid-1;
            }else min=mid+1;

        }
        System.out.println(max);
    }
}

 

 

'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java]BOJ 1351 : ๋ฌดํ•œ ์ˆ˜์—ด  (1) 2025.02.21
[Java]BOJ 2225 : ํ•ฉ๋ถ„ํ•ด  (0) 2025.02.21
[Java]BOJ 2776 : ์•”๊ธฐ์™•  (0) 2025.01.13
[Java]BOJ 1388 : ๋ฐ”๋‹ฅ์žฅ์‹  (0) 2024.12.07
[Java]BOJ 1026 : ๋ณด๋ฌผ  (0) 2024.12.06
'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java]BOJ 1351 : ๋ฌดํ•œ ์ˆ˜์—ด
  • [Java]BOJ 2225 : ํ•ฉ๋ถ„ํ•ด
  • [Java]BOJ 2776 : ์•”๊ธฐ์™•
  • [Java]BOJ 1388 : ๋ฐ”๋‹ฅ์žฅ์‹
m.<jj
m.<jj
  • m.<jj
    JJ
    m.<jj
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (24)
      • Study (14)
        • Python (7)
        • Java (4)
        • HTML-CSS (1)
        • error (1)
        • Redis (0)
      • Algorithm (9)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    python
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
m.<jj
[Java]BOJ 1654 : ๋žœ์„  ์ž๋ฅด๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”