π 1046. λ§μ§λ§ λμ 무κ²
λ§μ§λ§ λμ 무κ²β
λ¬Έμ μ€λͺ β
μ μ λ°°μ΄ stonesκ° μ£Όμ΄μ§λ©°, stones[i]λ iλ²μ§Έ λμ 무κ²λ₯Ό λνλ λλ€.
μ°λ¦¬λ λμ κ°μ§κ³ κ²μμ ν©λλ€. λ§€ ν΄λ§λ€ κ°μ₯ λ¬΄κ±°μ΄ λ κ°μ λμ μ ννμ¬ μλ‘ λΆλͺνλλ€. xμ yλ₯Ό κ°κ° λ λμ 무κ²λΌκ³ ν λ (x β€ y), λΆλͺν κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€:
- λ§μ½ x == yλΌλ©΄, λ λ λͺ¨λ νκ΄΄λ©λλ€.
- λ§μ½ x != yλΌλ©΄, x 무κ²μ λμ νκ΄΄λκ³ , y 무κ²μ λμ y - xμ μλ‘μ΄ λ¬΄κ²λ₯Ό κ°κ² λ©λλ€.
κ²μμ΄ λλ λλ μ΅λ ν κ°μ λλ§ λ¨κ² λ©λλ€.
λ§μ§λ§μ λ¨μ λμ 무κ²λ₯Ό λ°ννμΈμ. λ¨μ λμ΄ μλ€λ©΄ 0μ λ°ννμΈμ.
μμ 1:β
μ
λ ₯: stones = [2,7,4,1,8,1]
μΆλ ₯: 1
μ€λͺ
:
7κ³Ό 8μ λΆλͺνμ 1μ΄ λμ΄ λ°°μ΄μ [2,4,1,1,1]μ΄ λ©λλ€.
2μ 4λ₯Ό λΆλͺνμ 2κ° λμ΄ λ°°μ΄μ [2,1,1,1]μ΄ λ© λλ€.
2μ 1μ λΆλͺνμ 1μ΄ λμ΄ λ°°μ΄μ [1,1,1]μ΄ λ©λλ€.
1κ³Ό 1μ λΆλͺνμ 0μ΄ λμ΄ λ°°μ΄μ [1]μ΄ λκ³ , μ΄κ²μ΄ λ§μ§λ§ λμ 무κ²μ
λλ€.
μμ 2:β
μ
λ ₯: stones [1]
μΆλ ₯: 1
μ μ½ μ‘°κ±΄:β
- 1 <= stones.length <= 30
- 1 <= stones[i] <= 1000
ν΄κ²° λ°©λ²β
class Solution:
def lastStoneWeight(self, stones: List[int]) -> int:
while stones and stones[-1]:
stones = heapq.nsmallest(len(stones), stones)
if len(stones) == 1:
return stones.pop()
elif len(stones) == 2:
return stones.pop() - stones.pop()
item1 = stones.pop()
item2 = stones.pop()
if item1 - item2 is not 0:
stones.append(item1 - item2)
κ²°κ³Ό runtime : 30ms 96.20%
κ·Όλ° μ΄λ κ² μ¬μ©νλκ±°λ©΄ κ·Έλ₯ sortμ°λκ² λ§μ§ μλ μκ°?
λ€λ₯Έ μ¬λλ€μ μ΄λ»κ² νμλ νμΈν΄λ³΄λ
class Solution:
def lastStoneWeight(self, stones: List[int]) -> int:
stones = [-stone for stone in stones]
heapq.heapify(stones)
while len(stones) > 1:
y = heapq.heappop(stones)
x = heapq.heappop(stones)
if x != y:
heapq.heappush(stones, y - x)
return -stones[0] if stones else 0
λ€λ₯Έ μ¬λλ€μ΄ νΌ κ²°κ³Όλ μ΄λ λ€.
κ·Έλ¬λκΉ heapqλ λͺ¨λμ΄κ³ κ·Έκ±Έ κ·Έλλ‘ νμ©νλλ° μμλ€μ κ°μ λ€ λ§μ΄λμ€λ‘ λ°κΎΈκ³ λ§μ΄λμ€λ‘ λ°λ μμλ₯Ό ν μ λ ¬ν΄λ²λ¦¬λ©΄ ν°μλλ‘ μ΄μ§νΈλ¦¬λ‘ μ λ ¬λκ³ μ΅μ’ κ²°κ³Όμ -λ§ λΆμ¬μ λ°μνλ©΄ λ¨
μ€λͺ β
μ΄ ν΄κ²°λ°©λ²μ Pythonμ heapq λͺ¨λμ μ¬μ©ν©λλ€:
- λͺ¨λ λμ 무κ²λ₯Ό μμλ‘ λ³νν©λλ€ (μ΅λ νμ ꡬννκΈ° μν΄)
- heapifyλ₯Ό μ¬μ©νμ¬ νμΌλ‘ λ³νν©λλ€
- λμ΄ 2κ° μ΄μ λ¨μμλ λμ:
- κ°μ₯ ν° λ λμ κΊΌλ λλ€ (μμμ΄λ―λ‘ μ€μ λ‘λ κ°μ₯ μμ κ°)
- λ λμ μ°¨μ΄κ° μλ€λ©΄ μλ‘μ΄ λμ νμ μΆκ°ν©λλ€
- λ§μ§λ§ λμ΄ λ¨μμλ€λ©΄ κ·Έ κ°μ μμλ‘ λ³ννμ¬ λ°ννκ³ , μλ€λ©΄ 0μ λ°νν©λλ€
μ°Έκ³ url μ λ€μκ³Ό κ°λ€.