문제 링크 : https://leetcode.com/problems/asteroid-collision/description/
두 운석..?이 충돌하고 남은 운석을 반환하는 문제이다.
운석을 stack에 저장하고 주어진 조건에 따라서(-운석과 +운석이 절대값이 똑같으면 둘 다 없어짐, 절대값 큰 작은 쪽이 사라짐) stack에서 pop하고 남은 stack을 반환하면 된다
class Solution:
def asteroidCollision(self, asteroids: List[int]) -> List[int]:
if not asteroids or len(asteroids) == 1 :
return asteroids
stack = []
for i in asteroids:
while stack and i<0<stack[-1]:
if -i == stack[-1]:
stack.pop()
break
elif stack[-1] < -i:
stack.pop()
else:
break
else:
stack.append(i)
return stack