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입니다.

lock icon제출 시 숨은 테스트 +13개

challenge icon

후속 질문

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

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

케이스 1

케이스 2

케이스 3

입력

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

기대값

0