주니어로서의 백 걸음, 개발자로서의 한 걸음

[백준 2217] 로프 파이썬 문제 풀이 본문

Python/백준 문제풀이

[백준 2217] 로프 파이썬 문제 풀이

코딩하는 친구 2023. 6. 29. 13:33

문제 풀이: 로프를 병렬로 연결하면 각 로프에는 w / k 만큼의 동일한 중량이 걸린다.

즉, 가장 작은 무게를 들 수 있는 로프가 들 수 있는 질량 * 병렬연결 로프의 개수

예를 들어 로프가 들 수 있는 중량이 다음과 같다면 [100, 80, 60, 40, 20]

중량 100을 들 수 있는 로프 한 개를 사용했을 때 들 수 있는 무게: 100

중량 80을 들 수 있는 로프 두 개를 사용했을 때 들 수 있는 무게: 80 * 2 = 160

중량 60을 들 수 있는 로프 세 개를 사용했을 때 들 수 있는 무게: 60 * 3 = 180

중량 40을 들 수 있는 로프 네 개를 사용했을 때 들 수 있는 무게: 40 * 4 = 160

중량 20을 들 수 있는 로프 다섯 개를 사용했을 때 들 수 있는 무게: 20 * 5 = 100

이 중에서 가장 큰 값이 답이다.

n = int(input())
ropes = []
for i in range(n):
    ropes.append(int(input()))
ropes.sort(reverse=True)

max_weight = 0
for i in range(n):
    k = ropes[i] * (i+1)
    if k > max_weight:
        max_weight = k
        
print(max_weight)