728x90
반응형
문제
https://www.acmicpc.net/problem/2217
해설
적은 중량을 드는 로프는 큰 중량을 드는 로프만큼 들 수 없다.
큰 중량 로프가 적은 중량 로프한테 맞춰줘야 한다.
ex) 15, 30 짜리 로프가 있을 때,
15는 30만큼 들 수 없지만 / 30은 15만큼 들 수 있다.
로프가 [3, 5, 10, 15, 30] 있을 때,
30은 -> 30만 들 수 있고(1개)
15는 -> 15, 30(2개)
10은 -> 10, 15, 30(3개)
5는 -> 5, 10, 15, 30(4개)
3은 -> 3, 5, 10, 15, 30이 들 수 있다.(5개)
가장 큰 중량 로프일수록 가장 적은 개수로만 들 수 있으니
로프를 내림차순으로 정리하여,
1부터 곱해주면 된다.
그렇게 나온 결과 중에서 가장 큰 값을 찾으면 된다.
코드
-파이썬
#백준 2217(로프)
n = int(input()) #줄 개수
weight = []
res = []
for i in range(n):
weight.insert(i, int(input()))
weight.sort(reverse=True)
for j in range(n):
res.insert(j, weight[j] * (j + 1))
print(max(res))
-자바
//백준 2217(로프)
import java.util.*;
import java.io.*;
public class Boj_2217 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine()); //로프 개수
int[] weight = new int[n];
int res = 0;
for(int i = 0; i < n; i++) {
weight[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(weight);
for(int j = n - 1; j >= 0; j--) {
if(res < weight[j] * (n - j)) {
res = weight[j] * (n - j);
}
}
System.out.println(res);
}
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[파이썬, 자바] BOJ_20363(당근 키우기) (0) | 2021.02.15 |
---|---|
[파이썬] BOJ_1758(알바생 강호) (0) | 2021.02.12 |
[파이썬, 자바] BOJ_2847(게임을 만든 동준이) (0) | 2021.02.10 |
[파이썬, 자바] BOJ_2752(세수정렬) (0) | 2021.02.08 |
[파이썬, 자바] BOJ_11256(사탕) (0) | 2021.02.03 |