Menu
CoddyTech

Last Stone Weight

쉬움힙python iconjava iconcpp iconc iconjs icon+10

돌무더기가 있고, stones[i]는 i번째 돌의 무게입니다. 매 라운드마다 가장 무거운 돌 두 개를 가져와 서로 부딪치게 합니다. 두 돌의 무게가 같으면 둘 다 부서집니다. 그렇지 않으면 더 가벼운 돌은 부서지고, 더 무거운 돌의 무게는 두 무게의 차이만큼 줄어듭니다.

돌이 최대 하나 남을 때까지 라운드를 진행하고 남은 돌의 무게를 반환하거나, 돌이 하나도 남지 않았을 때 0을 반환하는 lastStoneWeight를 작성하세요.

함수

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
더미에 있는 돌의 무게
반환값integer
마지막 돌의 무게 또는 남은 돌이 없으면 0

제약 조건

  • 1 ≤ stones.length ≤ 104
  • 1 ≤ stones[i] ≤ 1000

예제

입력
stones = [3, 9, 4, 6, 2]
출력
0
설명
9와 6은 3을 남기고, 그다음 4와 3은 1을 남기며, 그다음 3과 2는 또 다른 1을 남깁니다. 두 개의 1 돌은 서로 부딪혀 사라지므로 답은 0입니다.
challenge icon

후속 질문

무게는 최대 1000입니다. 이 상한을 활용해 힙 없이 O(n + W) 시간에 끝낼 수 있나요? 여기서 W는 가장 큰 무게입니다.

코드 초기화
def lastStoneWeight(stones):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

stones = [3, 9, 4, 6, 2]

예상 출력

0