
라이프 수치가 적혀있는 가드 뭉치로 게임을 하려고 합니다. 각 카드의 라이프 수치는 cards에 정수 배열로 주어집니다. 게임 규칙은 다음과 같습니다.
x와 y라고 가정합니다.x == y이면, 두 카드 모두 소멸합니다.x < y이면, y 카드는 소멸하고 x 카드는 라이프가 y만큼 차감된 후 카드 뭉치로 넣습니다.y < x일 경우, 위와 반대로 x 카드가 소멸하고 y 카드는 라이프가 x 만큼 차감될 후 카드 뭉치로 넣습니다.이 게임을 계속 진행하다가 마지막에 카드 뭉치에 남은 카드의 라이프 수치를 출력하는 프로그램을 구현하세요. 단, 마지막에 모든 카드가 소멸되는 경우에는 0을 반환하세요.
입출력 예
cards = {4, 8, 6, 1, 2}1{4, 1, 2, 2}가 된다.{1, 2, 2}가 된다.{1} 이 된다.while문을 사용하여 cards에 요소가 2개 이상 남을 때까지만 반복합니다.
우선 편리성을 위해 배열을 내림차순으로 정렬합니다. 이 후 가장 큰 숫자 두개를 뽑아야 하므로 차례대로 pop()한 결과를 변수에 대입하고, 두 숫자의 차를 구해 다시 배열에 넣습니다. 만약 같다면 그냥 소멸하므로 뽑기만 하고 더 진행하지 않습니다.
만약 다 돌았을 때 배열에 1가지 요소가 남아있다면 그 요소를 반환하고, 아무것도 없다면 0을 반환합니다.
function solution(n) {
while (n.length > 1){
n.sort((a, b) => a - b );
const x = n.pop();
const y = n.pop();
if( x - y !== 0){
const sum = Math.abs(x - y);
n.push(sum);
}
}
return n.length > 0 ? n[0] : 0;
}