Problem From.
https://leetcode.com/problems/asteroid-collision/
오늘 문제는 asteroids 배열이 주어질때, 주어진 조건에 따라 원소들이 폭발을 일으켜서 없어지는지 아닌지 구하는 문제였다.
이 문제는 stack 을 이용해서 풀 수 있었는데, 먼저 모든 원소를 스택에 넣어두고, 앞에서부터 하나씩 빼오면서 각각의 원소가 충돌이 되느지 안되는지를 구하면서 문제를 풀면 되었다.
import java.util.Stack
import kotlin.math.abs
class Solution {
fun asteroidCollision(asteroids: IntArray): IntArray {
var stack = Stack<Int>()
for(asteroid in asteroids){
var temp = asteroid
while(stack.isNotEmpty() && temp < 0 && stack.peek() > 0){
if(stack.peek() == abs(temp)){
stack.pop()
temp = 0
}
else if(stack.peek() > abs(temp)){
temp = 0
}
else{
stack.pop()
}
}
if(temp!=0){
stack.push(temp)
}
}
return stack.toIntArray()
}
}
많은 도움이 되었습니다, 감사합니다.