

https://school.programmers.co.kr/learn/courses/30/lessons/12906?language=java
import java.util.*;
public class Solution {
public int[] solution(int[] arr) {
// LinkedHashSet을 사용하여 입력 순서를 유지하면서 중복을 제거
Set<Integer> set = new LinkedHashSet<>();
for (int num : arr) {
set.add(num);
}
// Set을 배열로 변환
int[] answer = set.stream().mapToInt(Integer::intValue).toArray();
// 배열을 문자열로 예쁘게 출력
System.out.println(Arrays.toString(answer));
return answer;
}
public static void main(String[] args) {
Solution sol = new Solution();
// 테스트 코드 실행
sol.solution(new int[]{1, 2, 2, 3, 3, 3});
}
}
HashSet으로 구현해봤지만 {1,1,1,2,2,1} 과 같은 경우 {1,2,1}이 만들어져야 하는데, 어떻게 구현해야 할지 감이 오지 않았음.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
// 스택을 사용하여 연속되는 숫자 제거하기
Stack<Integer> stack = new Stack<>();
// 첫 번째 숫자는 무조건 스택에 추가
stack.push(arr[0]);
for(int i = 1; i < arr.length; i++) {
// 스택의 맨 위 숫자와 현재 숫자를 비교
if(stack.peek() != arr[i]) {
// 다르면 스택에 추가
stack.push(arr[i]);
}
}
// 결과를 저장할 배열 생성
int[] answer = new int[stack.size()];
// 스택의 내용을 배열로 복사
for(int i = 0; i < answer.length; i++) {
answer[i] = stack.get(i);
}
return answer;
}
}