https://school.programmers.co.kr/learn/courses/30/lessons/12906
import java.util.ArrayList;
import java.util.List;
public class Solution {
public int[] solution(int[] arr) {
List<Integer> result = new ArrayList<>();
// 배열이 비어있지 않은 경우
if (arr.length != 0) {
result.add(arr[0]); // 첫 번째 요소 추가
}
// 배열을 순회하며 연속되는 숫자를 제거
for (int i = 1; i < arr.length; i++) {
// 현재 요소가 이전 요소와 다르면 추가
if (arr[i] != arr[i - 1]) {
result.add(arr[i]);
}
}
// List를 int[]로 변환
int[] answer = new int[result.size()];
for (int i = 0; i < result.size(); i++) {
answer[i] = result.get(i);
}
return answer;
}
}
import java.util.Stack;
public class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stack = new Stack<>();
// 배열을 순회
for (int i = 0; i < arr.length; i++) {
// 스택이 비어 있거나, 현재 요소가 스택의 최상단 요소와 다르면
if (stack.isEmpty() || stack.peek() != arr[i]) {
stack.push(arr[i]); // 스택에 현재 요소 추가
}
}
// 스택의 크기로 결과 배열 생성
int[] answer = new int[stack.size()];
// 스택의 요소를 결과 배열로 이동
for (int i = stack.size() - 1; i >= 0; i--) {
answer[i] = stack.pop();
}
return answer;
}
}