Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 3135
  • 백준 7567
  • 백준
  • 백준 8892
  • 백준 12605
  • 백준 1914
  • 백준 2225
  • 백준 1011
  • 백준 1064
  • 백준 10709
  • 백준 4659
  • 백준 15655
  • 백준 1495
  • 백준 15961
  • 백준 2343
  • 백준 3049
  • 백준 2467
  • 백준 6550
  • 백준 15312
  • 백준 16194
  • 백준 12871
  • 백준 1747
  • 백준 2591
  • 자바
  • 백준 1531
  • 백준 24039
  • 백준 16926
  • 백준 7662
  • Java
  • 백준 14582
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 1654 랜선 자르기(Java)
백준

백준 1654 랜선 자르기(Java)

2023. 2. 6. 17:03

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

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 이분 탐색을 사용하는 문제입니다. 다만 주의할 점은 시작할 때 left 값을 0을 주면 mid값이 0이나 오면서 / by zero 오류가 발생합니다. 따라서 랜선의길이는 자연수이므로 최소 1로 시작하여야 합니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    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();
    Arrays.sort(arr);

    long l = 1;
    long r = arr[k - 1];

    while(l <= r) {
      long sum = 0;
      long mid = (l + r) / 2;
      for(int i = 0; i < k; i++) sum += (arr[i] / mid);

      if(sum < n) r = mid - 1;
      else l = mid + 1;
    }
    
    System.out.println(r);
  }
}

'백준' 카테고리의 다른 글

백준 11279 최대 힙(Java)  (0) 2023.02.07
백준 14889 스타트와 링크(Java)  (0) 2023.02.07
백준 9020 골드바흐의 추측(Java)  (0) 2023.02.06
백준 1541 잃어버린 괄호(Java)  (0) 2023.02.06
백준 2805 나무 자르기(Java)  (0) 2023.02.06
    '백준' 카테고리의 다른 글
    • 백준 11279 최대 힙(Java)
    • 백준 14889 스타트와 링크(Java)
    • 백준 9020 골드바흐의 추측(Java)
    • 백준 1541 잃어버린 괄호(Java)
    Park DJ
    Park DJ

    티스토리툴바