문제풀이 순서
- 반복문을 돌면서 배열에 있는 숫자 Stack에 삽입
1-1. 맨 처음 숫자는 무조건 담기
1-2. 다음부터는 스택에 담겨있는 숫자와 비교해서 같지 않을경우에만 넣기
- answer의 사이즈 Stack에 사이즈로 만들기
- Stack에 있는 숫자 꺼내기
여기서 주의! Stack은 후입선출(LIFO : Last In First Out) 방식으로 자료를 처리함 (arr의 배열의 순서를 유지 해야함으로 역순으로 담아야함)
Stack
Stack<T> 스택 이름 = new Stack<>();
- add() : 값을 추가
- push() : 데이터 스택에 추가, 해당값 반환
- pop() : 값 하나씩 빼낼수 있음
스택에서 값이 제거 되면서 동시에 값 반환
- clear() : 값 모두 제거 / 반환되는 값이 없음
- peak() : 스택의 마지막 요소 반환, 스택에는 변화를 주지 않음
스택이 비어있을경우, NoSuchElementException 예외 발생
코드
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer;
Stack<Integer> st = new Stack<>();
for(int i=0; i < arr.length; i++){
if(i == 0){
st.push(arr[i]);
}else if(st.peek() != arr[i]){
st.push(arr[i]);
}
}
answer = new int[st.size()];
for(int i = st.size()-1; i >=0; i--){
answer[i] = st.pop();
}
System.out.println("Hello Java");
return answer;
}
}