Menu
CoddyTech

Asteroid Collision

보통스택python iconjava iconcpp iconc iconjs icon+10

소행성들이 한 줄을 따라 모두 같은 속도로 이동합니다. asteroids의 각 값은 소행성 하나를 나타냅니다. 절댓값은 크기이고 부호는 방향을 나타내며, 양수는 오른쪽, 음수는 왼쪽입니다.

오른쪽으로 이동하는 소행성이 왼쪽으로 이동하는 소행성과 만나면 충돌합니다. 더 작은 소행성은 폭발하고, 크기가 같으면 둘 다 폭발합니다. 같은 방향으로 이동하는 소행성들은 절대 만나지 않습니다. 모든 충돌이 끝난 뒤 남은 소행성들을 원래 순서대로 반환하세요. 결과는 비어 있을 수도 있습니다.

함수

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
왼쪽에서 오른쪽 순서의 소행성, 방향을 나타내는 부호, 크기를 나타내는 절댓값
반환값integer-array
왼쪽에서 오른쪽으로 남아 있는 소행성들(없을 수도 있음)

제약 조건

  • 1 ≤ asteroids.length ≤ 104
  • -1000 ≤ asteroids[i] ≤ 1000
  • asteroids[i] ≠ 0

예제

입력
asteroids = [4, 9, -6, 2, -3]
출력
[4, 9]
설명
9는 -6과 만나 이깁니다. 2는 -3과 만나 폭발하고, 그다음 -3은 계속 날아가 9와 만나 역시 폭발합니다. 다른 어떤 것도 다른 무언가를 향해 움직이지 않으므로 4와 9가 남습니다.
challenge icon

후속 질문

스택은 어떤 소행성이 살아남는지 알려줍니다. 폭발하는 각 소행성에 대해, 그 소행성을 파괴한 소행성의 인덱스도 어떻게 보고할 수 있을까요?

코드 초기화
def asteroidCollision(asteroids):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

asteroids = [4, 9, -6, 2, -3]

예상 출력

[4, 9]