알고리즘/BOJ

[BOJ 2217, Python 3] 로프

70825 2021. 7. 31. 13:07
반응형

https://www.acmicpc.net/problem/2217

 

2217번: 로프

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

www.acmicpc.net

 

 

풀이

이건 로프가 큰 것부터, 즉 내림차순으로 정렬하여 최대 무게를 찾아주면 됩니다.

내림차순으로 정렬하게 되면 이전까지의 로프가 버틸 수 있는 최대 중량이 현재 로프가 버틸 수 있는 최대 중량보다 무조건 크거나 같음을 보장하기 때문에 (현재 로프가 버틸 수 있는 최대 중량) * (지금까지 확인한 로프의 수)로 최댓값을 구할 수 있습니다.

 

 

코드

1
2
3
= int(input())
arr = sorted([int(input()) for _ in range(n)])[::-1]
print(max(arr[i] * (i + 1for i in range(n)))
cs
반응형