백준
BOJ[java]_2217 로프
양갱이요
2023. 2. 26. 21:20
백준 링크 : https://www.acmicpc.net/problem/2217
문제풀이 힌트
1. 밧줄 허용 중량 오름차순으로 정렬한다.
2. i번째 밧줄보다 크거나 같은 중량을 견딜 수 있는 밧줄은 N-i개이다.
3. 그 N-i개의 밧줄 중에서 허용 중량이 가장 작은 것은 i번째 밧줄이다.
4. 그 N-i개의 밧줄을 을 모두 사용하면, (i번째밧줄허용중량 * N-i개) 중량을 견딜 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(reader.readLine());
int[] A = new int[N];
for (int i = 0; i < N; ++i)
A[i] = Integer.parseInt(reader.readLine());
Arrays.sort(A); // 허용 중량 배열을 오름차순으로 정렬한다.
int max = 0; // 구해야할 최대값
for (int i = 0; i < N; ++i)
// i번째 배열보다 더 큰 중량을 견딜 수 있는 밧줄은 N-i개이다.
// 그 N-i개 밧줄이 견딜 수 있는 중량은 A[i] * (N - i) 이다.
max = Math.max(max, A[i] * (N - i));
System.out.println(max);
}
}