LeetCode/Grind169

[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

 

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



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

 

https://youtu.be/LN7KjRszjk4?si=hXG_JTtfDUMZyoD-