반응형
문제 설명
N개의 로프를 이용해 물체를 들어올린다.
N개의 로프는 주어진 중량만큼까지만 물체를 들어올릴 수 있으며, K개의 로프를 이용하여 W무게의 물체를 들어올린다면, 모든 로프에 똑같이 W / K 만큼의 중량이 걸리게 된다.
입력으로 각 로프들에 대한 정보가 주어지면, 이 로프들을 이용하여 버틸 수 있는 최대 중량을 출력하면 된다.
풀이 과정
A라는 로프가 버틸 수 있는 중량이 최대 A라면 이 로프는 A를 넘어가는 무게는 들 수 없다.
이 때, A 한개를 이용하면 A만큼 들 수 있고 두개를 이용하면 2A만큼 들 수 있다. ( 2A / 2 = A )
주의해야 할 점은, 가장 무거운 무게의 로프가 들 수 있는 중량을 A, 그 다음을 B라고 할 때,
로프 1개를 이용하여 들수 있는 중량의 최댓값은, A가 될 것이고, 로프 2개를 이용하여 들 수 있는 최댓값은 B*2가 된다.
즉, 이용할 로프 중 가장 작은 무게의 로프중량 * 개수 가 될 것이다.
따라서, 로프의 개수를 늘릴수록 최댓값은 그 로프의 무게*N이 될 것이기 때문에
로프들의 무게를 내림차순으로 정렬하여, 로프의 개수가 늘어갈수록 현재 로프의 수 * 쌓인 로프의 수를 곱해주면 로프들이 들 수 있는 무게의 값들이 정리될 것이다.
n = int(input())
rope = []
for i in range(n):
rope.append(int(input()))
rope.sort(reverse=True)
for i in range(n):
rope[i] = rope[i] * (i+1)
print(max(rope))
전체 문제 & 코드는 위의 깃에 정리되어 있습니다.
팔로우 & 맞팔은 환영입니다 !
반응형
'Algorithm > Greedy' 카테고리의 다른 글
[백준] 4796 캠핑 (Python 파이썬) (0) | 2021.04.09 |
---|---|
[백준] 1783 병든 나이트 (Python 파이썬) (0) | 2021.04.09 |
[백준] 13305 주유소 (Python 파이썬) (0) | 2021.04.08 |
[백준] 1541 잃어버린 괄호 (Python 파이썬) (0) | 2021.04.08 |
[백준] 11399 ATM (Python 파이썬) (0) | 2021.04.08 |