문제
- 로프는 그 굵기나 길이에 따라 들 수 있는 물체의 중량이 서로 다르다.
하지만 k개의 로프를 병렬로 연결하면 중량이 w인 물체를 들어올릴 때 각각의 로프에 모두 고르게 w/k만큼의 중량이 걸린다.
- N개의 로프에 대한 정보가 주어졌을 때, 로프들로 들어올릴 수 있는 물체의 최대 중량을 구하기
- 모든 로프를 사용할 필요는 없다.
- 1 <= N <= 100,000
풀이
- 로프를 병렬로 연결하면 w/k 만큼의 중량을 들 수 있기 때문에,
k개 로프를 사용한다면 가장 적은 중량을 들 수 있는 로프를 기준으로 w의 중량이 정해진다.
- => 로프가 들 수 있는 중량의 순서로 정렬하고, 해당 로프 * 로프 개수를 모두 구한다.
N = int(input())
ropes = [int(input()) for _ in range(N)]
ropes.sort() # 로프 정렬하기
answers = [] # 정답 배열
for rope in ropes :
answers.append(rope * N)
N -= 1
print(sorted(answers)[-1])
References