Menu
CoddyTech

Minimum Cost of Ropes

쉬움힙그리디python iconjava iconcpp iconc iconjs icon+10

몇 개의 밧줄이 있고, ropes[i]는 밧줄 i의 길이입니다. 임의의 밧줄 두 개를 하나로 합칠 수 있으며, 합쳐진 밧줄의 길이는 두 밧줄 길이의 합이고, 합치는 비용도 같은 합입니다. 밧줄 하나만 남을 때까지 계속 합칩니다.

모든 밧줄을 하나로 합치는 최소 총비용을 반환하는 minCostRopes라는 함수를 작성하세요. 처음부터 밧줄이 하나뿐인 경우에는 0을 반환합니다.

함수

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
각 밧줄의 길이
반환값integer
모든 로프를 하나로 합치는 최소 총비용

제약 조건

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • 답은 32비트 부호 있는 정수 범위에 들어갑니다.

예제

입력
ropes = [5, 2, 8, 3]
출력
33
설명
2와 3을 합쳐 5를 만들고, 길이가 5인 두 로프를 합쳐 10을 만든 다음, 8과 10을 합쳐 18을 만듭니다. 합계는 5 + 10 + 18 = 33입니다.
challenge icon

후속 질문

한 번의 연결로 최대 세 개의 밧줄을 묶을 수 있고 비용은 밧줄 길이의 합이라고 가정해 보세요. 밧줄의 개수가 균등하게 나누어떨어지지 않을 때 탐욕적 규칙은 어떻게 달라질까요?

코드 초기화
def minCostRopes(ropes):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

ropes = [5, 2, 8, 3]

예상 출력

33