import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer;
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < arr.length; i++) {
if(stack.isEmpty()) {
stack.push(arr[i]);
} else {
if(stack.peek() != arr[i]) {
stack.push(arr[i]);
}
}
}
answer = new int[stack.size()];
int index = 0;
for(int n : stack) {
answer[index] = n;
index++;
}
return answer;
}
}
이 문제는 스택을 이용해서 풀었다. 먼저 스택을 선언해주고, arr에 대하여 for문을 돌린다. 이때 stack이 비어있는 경우 arr의 i번째 요소를 stack에 push해준다. 비어있지 않은 경우 중에서 stack에 있는 상단의 요소를 뽑은 값이 arr의 i번째 요소와 같지 않으면 연속된 숫자가 아니기 때문에 stack에 넣어준다.
그런 다음 answer를 stack의 size만큼 배열을 생성해준다.
그리고 나서 stack에 대하여 for문을 돌려서 answer에 stack의 원소를 할당해주면 된다.