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
'LeetCode > LeetCode75' 카테고리의 다른 글
[LeetCode 75] Easy - 933. Number of Recent Calls (0) | 2024.11.14 |
---|---|
[LeetCode 75] Medium - 394. Decode String (0) | 2024.11.14 |
[LeetCode 75] Medium - 2352. Equal Row and Column Pairs (0) | 2024.11.14 |
[LeetCode 75] Easy - 643. Maximum Average Subarray I (0) | 2024.11.12 |
[LeetCode 75] Medium - 1679. Max Number of K-Sum Pairs ☆ (5) | 2024.11.12 |