Leetcode 솔루션: 마지막 돌 무게

돌[i]이 i번째 돌의 무게인 정수 돌의 배열이 주어집니다.

우리는 돌로 게임을 하고 있습니다. 매 턴마다 가장 무거운 두 개의 돌을 선택하여 함께 부수십시오. 가장 무거운 두 개의 돌이 x <= y인 가중치 x와 y를 갖는다고 가정합니다. 이 스매쉬의 결과는 다음과 같습니다.

x == y이면 두 돌이 모두 파괴되고
x != y이면 가중치 x의 스톤은 파괴되고 가중치 y의 스톤은 새로운 가중치 y - x를 갖습니다.
게임이 끝나면 기껏해야 돌이 하나만 남습니다.

마지막 남은 돌의 무게를 반환합니다. 남은 돌이 없으면 0을 반환합니다.

class Solution(object):
    def lastStoneWeight(self, stones):
        """
        :type stones: List[int]
        :rtype: int
        """

        stones = [-stone for stone in stones]

        heapq.heapify(stones)


        while len(stones) > 1:
            first  = heapq.heappop(stones)
            second = heapq.heappop(stones)

            if second > first:
                heapq.heappush(stones, first-second)


        return -stones[0] if len(stones) else 0



좋은 웹페이지 즐겨찾기