알고리즘/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
|
n = int(input())
arr = sorted([int(input()) for _ in range(n)])[::-1]
print(max(arr[i] * (i + 1) for i in range(n)))
|
cs |
반응형