
😎풀이
- 운석이 충돌하는 경우는, 우측 방향으로 이동하는 행성 이후에 등장하는 좌측방향 이동 행성이 있을 경우 뿐
- 조건이 두 행성이 충돌할경우 절댓값을 기준으로 낮거나 같은 경우 파괴
- 최종적으로 남겨지는 소행성 배열 반환
function asteroidCollision(asteroids: number[]): number[] {
const stack = []
for(const asteroid of asteroids) {
let destroyed = false
while(stack.length > 0 && stack.at(-1) > 0 && asteroid < 0) {
const asteroidAbs = Math.abs(asteroid)
const stackTop = stack.at(-1)
if(asteroidAbs > stackTop) {
stack.pop()
} else if(asteroidAbs === stackTop) {
stack.pop()
destroyed = true
break
} else {
destroyed = true
break
}
}
if(!destroyed) stack.push(asteroid)
}
return stack
};