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

굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다르다.
병렬로 연결하면 각가의 로프에는 모두 고르게 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
[백준 2217번 로프] 문제 해설 - 파이썬
[백준 2217번 로프] 문제 해설 - 파이썬 문제 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는
covenant.tistory.com
[백준] 2217번 로프 파이썬 해설
출처: https://www.acmicpc.net/problem/2217 2217번: 로프 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있.
sungmin-joo.tistory.com