- 문제
- 제출
N개의 로프가 주어졌을 때 k개의 로프에 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 따라서, k가 달라짐에 따른 최대 중량을 구하고 그중에서 가장 최대인 값을 알아내는 것이 문제의 포인트이다. k개의 로프 중 가장 무게가 작은 로프를 k개가 모두 동일하게 들어 올리면, 즉 k * (k개 중 최소 w)가 k개의 로프가 들 수 있는 최대 무게라고 할 수 있다.
따라서, 주어진 로프를 무게가 무거운 순서대로 나열하고 위에서 찾아낸 법칙을 적용하면 최대 무게를 구할 수 있다.
N = int(input())
rop = list(int(input()) for _ in range(N))
rop.sort(reverse = True)
result = []
for k in range(N):
result.append(rop[k]*(k+1))
print(max(result))
문제를 이해하는데 이전 문제보다는 시간이 걸렸던 것 같다.
하지만 이해하고 나니, 문제를 푸는데는 큰 어려움이 없었다!
'Study > [파이썬] 백준온라인' 카테고리의 다른 글
[ 백준/python ] 1931 : 회의실 배정 (0) | 2021.07.30 |
---|---|
[ 백준/python ] 1715 : 카드 정렬하기 (0) | 2021.07.30 |
[ 백준/python ] 5585 : 거스름돈 (0) | 2021.07.30 |
[백준/python] 9251 : LCS (0) | 2021.07.15 |
[백준/python] 10844 : 쉬운 계단 수 (0) | 2021.07.15 |