문제
1차원 공간에서 다른 소행성의 위치를 나타내는 배열 arr을 받는 JavaScript 함수를 작성해야 합니다.
각 소행성에 대해 절대값은 크기를 나타내고 부호는 방향을 나타냅니다(양수는 오른쪽, 음수는 왼쪽). 각 소행성은 같은 속도로 움직입니다.
우리의 기능은 모든 충돌 후 소행성의 상태를 알아내는 것입니다. 두 개의 소행성이 만나면 작은 소행성이 폭발합니다. 둘 다 크기가 같으면 둘 다 폭발합니다. 같은 방향으로 움직이는 두 개의 소행성은 결코 만나지 않을 것입니다.
예를 들어 함수에 대한 입력이
인 경우입력
const arr = [7, 12, -8];
출력
const output = [7, 12];
출력 설명
12와 -8이 충돌하여 12가 됩니다.
7과 12는 절대 충돌하지 않습니다.
예시
다음은 코드입니다 -
const arr = [7, 12, -8]; const findState = (arr = []) => { const track = [] for (const el of arr) { track.push(el) while (track[track.length - 1] < 0 && track[track.length - 2] > 0) { const a = -track.pop() const b = track.pop() if (a > b) { track.push(-a) } else if (a < b) { track.push(b) } } } return track }; console.log(findState(arr));
출력
[7, 12]