[LeetCode] 735. Asteroid Collision

Chobby·2026년 7월 28일

LeetCode

목록 보기
1118/1126

😎풀이

  1. 운석이 충돌하는 경우는, 우측 방향으로 이동하는 행성 이후에 등장하는 좌측방향 이동 행성이 있을 경우 뿐
  2. 조건이 두 행성이 충돌할경우 절댓값을 기준으로 낮거나 같은 경우 파괴
  3. 최종적으로 남겨지는 소행성 배열 반환
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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글