-
[백준]1654. 랜선 자르기 (Java)알고리즘/백준 2021. 8. 8. 23:49
💡 문제 분석
이분 탐색을 하면서 N개의 랜선을 만들 수 있는 최대 길이를 찾아나갑니다
int, long 범위 주의
⌨️ 코드
JAVA
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; // 정리 public class Q1654 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int K = Integer.parseInt(st.nextToken()); int N = Integer.parseInt(st.nextToken()); int[] arr = new int[K]; int len = 0; for(int i = 0; i < K; i++) { arr[i] = Integer.parseInt(br.readLine()); len = Math.max(len, arr[i]); } long lo = 1, hi = len; while(lo <= hi) { int sum = 0; long mid = (lo + hi) / 2; for(int i = 0; i < K; i++) sum += arr[i] / mid; if(sum >= N) { lo = mid + 1; } else { hi = mid - 1; } } System.out.println(hi); } }
'알고리즘 > 백준' 카테고리의 다른 글
[백준]1068. 트리(Java) (0) 2021.08.23 [백준]1107. 리모컨 (Java) (0) 2021.08.23 [백준]1699. 제곱수의 합 (Java) (0) 2021.08.08 [백준]1037. 약수 (java, python) (0) 2021.04.20 [백준]1026. 보물 (java, python) (0) 2021.04.20