문제
문제해결
import java.util.Arrays;
import java.util.Scanner;
public class B2217 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();//총 로프 개수
int[] ropes = new int[size];//각 로프가 버틸수 있는 중량
for(int i=0;i<size;i++)
ropes[i] = sc.nextInt();
//로프 정렬
Arrays.sort(ropes);
//로프들로 가장 많이 들수 있는 중량
int result = ropes[0]*size;
for(int i=0;i<size;i++) {
int tmp = ropes[i]*(size-i);
if(tmp>result)
result = tmp;
}
System.out.println(result);
}
}
- 모든 로프를 사용해야 한다면 들수 있는 최대 무게는 "제일 적게 드는 로프 X 로프 개수" 일 것이나 모든 로프를 사용할 필요는 없다는 조건이 있으므로 모든 조건을 살펴봐야된다
- 만약 총 로프 개수가 3이고, 각각 10, 80, 90의 무게를 들 수 있으면, 3개의 로프 사용시 총 30의 무게를, 2개의 로프 사용시 총 160의 무게를, 1개의 로프 사용시 90의 무게를 들 수 있다.
- 그러므로 우선 로프들을 오름차순 정렬 후 몇개의 로프를 사용 시 가장 많은 무게를 들수 있는지 구하면 된다.
'[알고리즘] > 백준' 카테고리의 다른 글
자바 - 구현 - 백준 11721 열 개씩 끊어 출력하기 (0) | 2021.03.02 |
---|---|
자바 - 구현 - 백준 14696 딱지놀이 (0) | 2021.03.01 |
자바 - 구현 - 백준 1316 그룹 단어 체커 (0) | 2021.02.28 |
자바 그리디 - 백준 1541 잃어버린 괄호 (0) | 2021.02.26 |
자바 그리디 - 백준 16435 스네이크 버드 (0) | 2021.02.25 |