기술(Tech, IT)/리트코드(LeetCode)

[LeetCode] 1167. Minimum Cost to Connect Sticks

Daniel803 2023. 7. 21. 02:39

 integer로 구성된 sticks라는 input array의 모든 요소를 이어 붙이는 문제다. 이 때 더할 때 마다 발생하는 합이 최소가 되도록 하는 문제다. sorting을 통해 풀이를 해야하나 잠시 생각했지만 Min heap을 사용하면 쉽게 구현이 가능하다.

 

class Solution:
    def connectSticks(self, sticks: List[int]) -> int:
        mh = sticks
        ret = 0

        heapify(mh)

        while len(mh) > 1:
            m1 = heappop(mh)
            m2 = heappop(mh)
            sum_ = m1 + m2
            ret += sum_
            heappush(mh, sum_)

        return ret