https://www.acmicpc.net/problem/2217
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Integer[] rope = new Integer[N];
for (int i = 0; i < N; i++) {
rope[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(rope, Collections.reverseOrder());
int maxWeight = 0;
for (int i = 0; i < N; i++) {
int tmp = rope[i] * (i + 1);
maxWeight = Math.max(maxWeight, tmp);
}
System.out.println(maxWeight);
}
}
💡 그리디
풀이
1. 로프별 임계 하중을 담은 배열을 내림차순 정렬한다.
2. 앞부터 탐색하며, 새로 합류된 로프가 적용된 최대 임계 하중을 그 전과 비교함
- 새로 합류된 i번째 로프의 임계 하중 rope[i], 이때 0 ~ i 로프를 사용해 버틸 수 있는 임계 하중
⇒ 값들 중 최소인 rope[i] * (i+1) 임. (w/k 이므로)
3. 새로 계산한 임계 하중과 기존 최대 임계 하중을 비교해 갱신
'Algorithm > Beakjoon' 카테고리의 다른 글
[JAVA] 백준 17141번 : 연구소 2 (1) | 2024.04.13 |
---|---|
[JAVA] 백준 6549번 : 히스토그램에서 가장 큰 직사각형 (1) | 2024.04.10 |
[JAVA] 백준 17435번 : 합성함수와 쿼리 (1) | 2024.02.26 |
[JAVA] 백준 2631번 : 줄세우기 (0) | 2024.02.03 |
[JAVA] 백준 2133번 : 타일 채우기 (0) | 2024.02.02 |