코딩테스트 연습 > 스택/큐 > 같은 숫자는 싫어
https://school.programmers.co.kr/learn/courses/30/lessons/12906
배열 arr가 주어지고 arr의 연속적으로 나타나는 숫자는 하나만 남기고 제거하라.

문제는 스택을 이용해서 간단하게 풀 수 있다. 스택에 배열의 요소를 집어넣고 peek()하여 다음 요소와 비교해서 다르면 집어넣으면 된다. 나는 나중에 return 할 배열에 쉽게 넣기 위해 스택에 넣을 때 arr의 뒤에서 부터 확인했다.(사실 어떻게 하던지 비슷하다.)
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
Stack<Integer> st = new Stack<>();
st.push(arr[arr.length -1]);
for(int i = arr.length-2; i>=0; i--){
if(!st.peek().equals(arr[i])){
st.push(arr[i]);
}
}
int[] answer = new int[st.size()];
int j = 0;
while(!st.isEmpty()){
answer[j++] = st.pop();
}
return answer;
}
}
복습으로 다시 푼 문제이기 때문에 그렇게 어렵진 않은 문제였다. 처음에 큐를 사용하고 싶어서 큐를 사용해보려고 했지만 큐의 peek()는 맨 처음 넣었던 것을 보여주기 때문에 그냥 스택을 사용해서 풀었다.
