본문 바로가기
Coding Test/Hash Table

[LeetCode] 3010. Divide an Array Into Subarrays With Minimum Cost I

by 헤이즐넛 좋아하는 개발자 2024. 12. 1.

I. Description

문제 링크: https://leetcode.com/problems/divide-an-array-into-subarrays-with-minimum-cost-i/description/


II. Code

방법이 바로 떠오르진 않았지만, 곧 첫 번째 항은 무조건 cost에 포함되고 그 뒤 항에서 최소인 2개의 항을 cost에 포함시키면 된다는 것을 알았다.

class Solution:
    def minimumCost(self, nums: List[int]) -> int:
        min_val = float('inf')
        second_min = float('inf')
        for num in nums[1:]:
            if num <= min_val:
                second_min = min_val
                min_val = num
            elif min_val <= num < second_min:
                second_min = num
        return nums[0] + min_val + second_min

if num == min_val 과 min_val == num인 경우에도 second_min과 min_val에 변화를 줘야 한다는 사실을 놓치면 안 되겠다.