BAEKJOON #2217 로프

2020. 3. 23. 17:27개발노트

이 문제의 저작권은 BAEKJOON에 있습니다.

 

https://www.acmicpc.net/problem/2217

문제는 위 링크에서 확인할 수 있습니다.

#로프
#https://www.acmicpc.net/problem/2217
N = int(input())
arr = [int(input()) for _ in range(N)]
arr = sorted(arr)
num = 0
for i in range(N, 0, -1):
  if arr[N-i] * i > num:
    num = arr[N-i] * i
print(num)

로프 N개가 있을 때 최대로 들 수 있는 무게를 구합니다.

k개의 로프를 사용하여 중량이 w인 물체를 들어 올릴 때,

각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리기 때문에

 

오름차순으로 정렬된 로프무게의 배열에서 로프 개수를 1씩 줄여가며 서로 곱합니다.

예를 들어 3개의 로프가 있다면

N(로프 수) arr(로프 무게) 곱한 값
3 1 3
2 2 4
1 3 3

로프로 들 수 있는 최대 물체의 중량을 구하는 문제이므로 정답은 4가 됩니다.