문제 링크
문제 요약
1. 들어올릴 수 있는 최대 중량을 구하라.
2. 로프는 들어올릴 수 있는 중량이 정해져있으며 k개의 로프를 병렬로 연결하여 중량이 w인 물체를 들어 올릴 때
각 로프엔 w/k의 중량이 걸리게 된다.
4. 로프는 모두 사용하지 않아도 되며, 임의로 정해 사용해도 된다.
어떻게 풀어야 할까?
k개의 로프를 1 ~ k개를 사용하는 경우 모두를 체크해야한다.
-> 내림차순 정렬을 하고 차례대로 값을 비교해보자
코드
n = int(input())
lopes = sorted([int(input()) for _ in range(n)], reverse=True)
maxweight = lopes[0]
for i in range(len(lopes)):
if maxweight < lopes[i] * (i + 1):
maxweight = lopes[i] * (i + 1)
print(maxweight)
코드 풀이
line 5. 내림차순이기 때문에 항상 iopes[i]값이 최소 중량이 된다.
따라서 lopes[idx] * (i + 1)를 통해 현재 최대 중량 값을 알 수 있고, 비교연산을 통해 최대 중량을 구할 수 있다.