백준 2217번 바로가기

나의 풀이

각 로프에 걸리는 최대 중량은 사용한 로프 중 최대 중량의 최솟값이다. (즉, 최대의 최소의 개념!) 따라서 각 로프의 중량을 오름차순으로 정렬한 뒤에 하나씩 뽑아서 그 로프의 최대 중량을 기준으로 들 수 있는 최대 중량을 구했다. 식으로 나타내자면 $ max_{total} = min_{rope} * num_{ropes} $ 이를 코드로 나타내면 다음과 같다.

# 입력
import sys

n = int(sys.stdin.readline())
rope = []
weight = []

for _ in range(n):
    rope.append(int(sys.stdin.readline()))
rope = sorted(rope)

# 처리
for i in range(n):
    weight.append(rope.pop(0)*(len(rope)+1))
    
print(max(weight))