LeetCode/LeetCode75

[LeetCode 75] Medium - 735. Asteroid Collision

hyunkookim 2024. 11. 14. 16:22

735. Asteroid Collision

 

class Solution:
    def asteroidCollision(self, asteroids: List[int]) -> List[int]:
        stack = []

        for a in asteroids:
            
            while stack and stack[-1] >0 and a < 0:
                diff = stack[-1] + a
                if diff == 0:
                    stack.pop()
                    a = 0
                elif diff < 0: # |stack[-1]| < |a|
                    stack.pop()
                else: # diff > 0, |stack[-1]| > |a|
                    a = 0
            # if a > 0: <-- 잘못된 풀이 
            # => 음수 소행성(a < 0)이 충돌 후 스택에 추가되지 않습니다.
            if a: # if a >0 or a < 0 둘다 의미 
                stack.append(a)
                
        return stack