728x90
조건
k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k만큼의 중량이 걸리게 된다.
-최대 중량이 10 , 15일 때, 15인 중량을 들게 되면, 10은 끊어지게 된다.
-모든 로프를 사용할 필요 없고, 로프들을 이용하여 들 수 있는 최대 중량을 구하는 것!
w = 병렬 연결된 로프의 중량 중 최소 * 병렬 연결된 로프의 수
예시
5
22가 입력됨 : 22 * 1 = 22
33가 입력됨 : 22 * 2 = 44
15가 입력됨 : 15 * 3 = 45
66가 입력됨 : 15 * 4 = 60
11가 입력됨 : 11 * 5 = 55
최대 중량은 22, 33, 15, 66가 입력되었을 때, 60일 때이다!
3
4
11
15
4 * 3 = 12
11 * 2 = 22
15 * 1 = 15
11, 15를 사용할 때, 중량이 22로 가장 크다
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
ArrayList<Integer> rope = new ArrayList<>();
for(int i = 0; i < N; i++) {
rope.add(scan.nextInt());
}
Collections.sort(rope);
int max = 0;
for(int i = 0; i < N; i++) {
if((rope.get(i) * (N - i)) > max)
max = rope.get(i) * (N - i);
}
System.out.println(max);
scan.close();
}
}
rope를 오름차순으로 정렬해준다.
rope가 가장 작은 것이 * N개 곱해졌을때
rope가 가장 큰 것이 하나만 사용되어졌을 때로 계산하면서
가장 최대값을 찾아준다
문제 이해를 제대로 못했다 ㅜㅜ
그리고 예제 1만 생각하고 푸니까, 로프를 다 사용할 경우만 생각했음!
모든 로프를 사용하지 않으면서, 가장 큰 값이 하나만 사용될때, 가장 많이 들 수 있다는 사실을 간과함!
728x90
'CS > Algorithm' 카테고리의 다른 글
[JAVA / 백준 : 1202] 보석도둑 (0) | 2021.07.20 |
---|---|
[ JAVA / 백준 : 4796 ] 캠핑 (0) | 2021.07.16 |
[ JAVA / 백준 : 13305 ] 주유소 (0) | 2021.07.14 |
[백준:1789] 수들의 합 - JAVA (백준 : InputMismatch오류) (0) | 2021.07.13 |
[백준:1439] 뒤집기 - JAVA (0) | 2021.07.12 |