본문 바로가기

PS

[BOJ] 2217번 로프 문제 - Python

www.acmicpc.net/problem/2217

 

2217번: 로프

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하

www.acmicpc.net

 

로프를 역정렬해서 계산한다.

 

예를 들어서,

 

로프가 [10, 8, 6, 4, 2] 이렇게 있다고 치면,

 

앞에서부터 하나씩 추가하면서 계산해보면

 

들 수 있는 최대무게는

 

[10, 16, 18, 24, 10]이 된다.

 

로프의 개수 x 하중의 최소가 되는 것이다.

 

from sys import stdin
input = stdin.readline

N = int(input())
rope = []
for _ in range(N):
    rope.append(int(input()))
rope.sort(reverse=True)

answer = rope[0]
cnt = 1

for i in range(1, N):
    cnt += 1
    tmp = cnt * rope[i]
    if tmp > answer:
        answer = tmp
        
print(answer)