https://www.acmicpc.net/problem/2217
1. 아이디어
특정 로프가 버틸 수 있는 최대 중량에 대해 해당 로프보다 버틸 수 있는 최대 중량이 큰 로프는 해당 중량을 버틸 수 있으므로 로프를 버틸 수 있는 중량으로 정렬한 후 특정 로프가 버틸 수 있는 최대 중량과 해당 로프보다 버틸 수 있는 최대 중량이 큰 로프의 수를 곱해서 로프들로 버틸 수 있는 최대 중량을 구한다.
2. 문제풀이
정렬 이후 물체의 최대 중량을 갱신하며 찾아나가기만 하면 된다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// 로프가 들어올릴 수 있는 최대 중량 기준으로 정렬
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
int ans = 0;
for (int i = 0; i < N; i++) {
// 해당 로프보다 튼튼한 로프의 개수를 세서 최대 중량 계산
ans = Math.max(ans, arr[i] * (N - i));
}
System.out.println(ans);
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2559번 - 수열 [Java] (0) | 2024.12.02 |
---|---|
[백준] 1439번 - 뒤집기 [Java] (0) | 2024.12.02 |
[백준] 1541번 - 잃어버린 괄호 [Java] (0) | 2024.12.02 |
[백준] 10430번 - 나머지 [Java] (1) | 2024.12.02 |
[백준] 11399번 - ATM [Java] (0) | 2024.12.02 |