굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다르다.
병렬로 연결하면 각가의 로프에는 모두 고르게 w(중량) / k(로프의 개수) 만큼의 중량이 걸린다.
모든 로프를 사용해야할 필요가 없다. 최대 중량을 구하는 문제이다.
모든 로프를 사용해야할 필요가 없다는 부분에서 어떻게 해야하는 거지,,라는 생각과 함께
그냥 sort( )를 해서 가장 작은 중량과 주어진 로프의 개수를 곱하는 것 외에는 다른 생각이 안들었다..ㅜ
그렇지만 예를 들어 3개의 로프가 주어진다고 생각했을 때, 각각 로프가 들 수 있는 최대 중량이
[15, 20, 5] 라고 한다면, ① 20(20짜리 하나) ② 30(15와 20 가능, 5는 불가능) ③ 15(15, 20, 5 모두 가능)이 된다.
따라서 여기서 가장 최대 중량은 30이 된다.
그래서 주어진 로프들을 내림차순으로 정렬해준 후, 개수를 늘려가는 방식으로 구해준 후 최대값을 구해주어야 한다.
#로프
n = int(input())
rope = []
for _ in range(n):
rope.append(int(input()))
rope.sort()
rope.reverse()
#rope.sort(reverse = True) 최대 중량을 버틸수 있는 로프 순으로
m = 0
for i in range(n):
if m < rope[i] * (i+1): #최대 중량 x 해당 개수들 중 최대 중량
m = rope[i] * (i+1)
print(m)
다음에 또 풀어봐야지,,!
참고한 사이트)
covenant.tistory.com/128
반응형