import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int[] arr) {
List<Integer> stk = new ArrayList<>();
int i = 0;
while (i < arr.length) {
if (stk.isEmpty()) {
stk.add(arr[i]);
i++;
} else if (stk.get(stk.size() - 1) == arr[i]) {
stk.remove(stk.size() - 1);
i++;
} else {
stk.add(arr[i]);
i++;
}
}
if (stk.isEmpty()) {
return new int[]{-1};
}
int[] answer = new int[stk.size()];
for (int j = 0; j < stk.size(); j++) {
answer[j] = stk.get(j);
}
return answer;
}
}
i가 arr의 길이보다 작은 동안 아래 작업을 반복합니다.
stk이 빈 배열인 경우: arr[i]를 stk에 추가하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같은 경우: stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 다른 경우: stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다.
작업을 마친 후, stk 리스트가 비어있는 경우 -1을 포함한 배열을 반환합니다.
그렇지 않은 경우, stk 리스트의 원소를 배열 answer로 복사하여 반환합니다.