Stack 안쓰고 List로만 푸는 방법
import java.util.Arrays;
import java.util.ArrayList;
public class Solution {
public int[] solution(int []arr) {
ArrayList<Integer> answer = new ArrayList<Integer>();
answer.add(arr[0]);
for(int i = 1; i<arr.length;i++){
if(arr[i-1]==arr[i]){
continue;
}
else{
answer.add(arr[i]);
}
}
return answer.stream().mapToInt(i -> i).toArray();
}
}
Stack 사용해서 푸는 방법
import java.util.Stack;
public class Solution {
public int[] solution(int []arr) {
//stack 생성
Stack<Integer> stack = new Stack<>();
for(int i : arr){
//stack.peek(): stack의 가장 위에 있는 값을 반환
//stack이 비어있거나 전 값이랑 현재 값이랑 다른 경우 push
if(stack.empty() || !stack.peek().equals(i)){
stack.push(i);
}
}
//stack to list
return stack.stream().mapToInt(i->i).toArray();
}
}