< All posts

3264. Final Array State After K Multiplication Operations I

문제 μ„€λͺ…

이 λ¬Έμ œμ—μ„œλŠ” λ‹€μŒ 연산을 k번 μˆ˜ν–‰ν•œλ‹€. μ΄λ•Œ, λͺ¨λ“  연산을 μˆ˜ν–‰ν•œ ν›„ λ°°μ—΄μ˜ μƒνƒœλ₯Ό λ°˜ν™˜ν•˜λΌ.

μ—°μ‚°:

  • λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 값을 μ°ΎλŠ”λ‹€.
  • λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 값을 μ°Ύμ•„ multiplier둜 κ³±ν•œλ‹€.
  • λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 값을 μ°Ύμ•„ multiplier둜 κ³±ν•œ 값을 λŒ€μ²΄ν•œλ‹€.

3264

풀이 및 ν•΄μ„€

풀이

class Solution:
    def getFinalState(self, nums: List[int], k: int, multiplier: int) -> List[int]:
        for i in range(k):
            minval = min(nums)
            for j in range(len(nums)):
                if nums[j] == minval:
                    nums[j] = nums[j] * multiplier
                    break
        
        return nums

Complexity Analysis

tc

μ‹œκ°„ λ³΅μž‘λ„

  • O(kn)
  • O(n)은 μ΅œμ†Œκ°’μ„ μ°ΎλŠ”λ°, O(k)λŠ” k번의 연산을 μˆ˜ν–‰ν•˜λŠ”λ° μ†Œμš”λœλ‹€.

곡간 λ³΅μž‘λ„

  • O(1)

Heap을 ν™œμš©ν•œ κ°œμ„ 

풀이

class Solution:
    def getFinalState(self, nums: List[int], k: int, multiplier: int) -> List[int]:
        heap = [(num, i) for i,num in enumerate(nums)]
        heapq.heapify(heap)
        
        for i in range(k):
            minval, idx = heapq.heappop(heap)

            new_val = minval * multiplier
            nums[idx] = new_val

            heapq.heappush(heap, (new_val, idx))
        
        return nums

Complexity Analysis

heaptc

μ‹œκ°„ λ³΅μž‘λ„

  • O(nlogn)
  • O(nlogn)은 heapify에 μ†Œμš”λ˜λŠ” μ‹œκ°„μ΄λ‹€.
  • O(klogn)은 k번의 연산을 μˆ˜ν–‰ν•˜λŠ”λ° μ†Œμš”λœλ‹€.
  • λ”°λΌμ„œ, O(nlogn + klogn) = O(nlogn)

곡간 λ³΅μž‘λ„

  • O(n)
  • heap에 nums의 λͺ¨λ“  μš”μ†Œλ₯Ό μ €μž₯ν•œλ‹€.

ν™•μ‹€νžˆ 빨라진 것을 확인할 수 μžˆλ‹€.

Constraint Analysis

Constraints:
1 <= nums.length <= 100
1 <= nums[i] <= 100
1 <= k <= 10
1 <= multiplier <= 5

References

Β© 2025 HyunJoon Sung. All Rights Reserved.

GitHub