본문 바로가기

Study/[파이썬] 백준온라인

[ 백준/python] 2217 : 로프

- 문제

 

- 제출

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))

 

문제를 이해하는데 이전 문제보다는 시간이 걸렸던 것 같다.

하지만 이해하고 나니, 문제를 푸는데는 큰 어려움이 없었다!