라이프 수치가 적혀있는 카드 뭉치가 있습니다. 게임 규칙은 두 명의 참가자가 카드 뭉치에서 라이프가 가장 높은 카드 한 장씩 뽑습니다.
서로 뽑은 카드의 라이프 수치를 갖고 겨룹니다.
배틀 규칙은 다음과 같습니다. 카드의 라이프 수치가 각 x와 y라고 가정합니다.
만약 x == y일 때, 두 카드는 소멸합니다.
만약 x > y일 때, y 카드는 소멸하고 x 카드는 라이프가 y만큼 차감된 후 카드 뭉치로 넣습니다.
이 게임을 계속 진행하다가 남은 카드의 라이프 수치를 출력하는 함수, solution을 완성해주세요.
예를 들어, 카드 뭉치의 라이프 수치 cards가 [4, 8, 6, 1, 2]일 때,
카드 8과 6을 뽑아 배틀하면, 라이프가 2인 카드가 남고, 카드 뭉치는 [4, 1, 2, 2]가 됩니다.
카드 4와 2를 뽑아 배틀하면, 라이프가 2인 카드가 남고, 카드 뭉치는 [1, 2, 2]가 됩니다.
카드 2와 2를 뽑아 배틀하면, 남는 카드가 없고, 카드 뭉치는[1]가 됩니다.
결과 1
[제한 사항]
최종적으로 카드 뭉치에 남은 카드가 없으면 0을 출력합니다.
function solution(cards) {
while (cards.length > 1) {
// 정렬
cards.sort((a, b) => a - b)
battle(cards)
}
return cards.length ? cards[0] : 0
}
function battle(cards) {
const life1 = cards.pop()
const life2 = cards.pop()
const leftLife = Math.abs(life1 - life2)
// 남은 카드 추가
if (leftLife) cards.push(leftLife)
}