문제
풀이방법
- List
- 스택
- Stack
- arr의 크기만큼 반복하면서 스택에 마지막으로 들어간 숫자를 확인(peek)하여 다르다면 추가(push)한다.
- 스택의 사이즈가 0일 경우에는 반드시 추가 필요
- 스택의 크기만큼 answer 배열을 생성한다.
- 스택의 값을 가져와(pop) answer 배열의 마지막 index부터 값을 넣는다.
- 스택은 후입선출 구조이기 때문
- arr의 크기만큼 반복하면서 스택에 마지막으로 들어간 숫자를 확인(peek)하여 다르다면 추가(push)한다.
코드
👇🏻 List
public int[] solution(int[] arr) {
List<Integer> answer = new ArrayList<>();
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] != arr[i + 1]) {
answer.add(arr[i]);
}
}
answer.add(arr[arr.length-1]);
return answer.stream().mapToInt(i->i).toArray();
}
👇🏻 Stack
public int[] solution2(int[] arr) {
Stack<Integer> s = new Stack<>();
for (int i = 0; i < arr.length; i++) {
if (s.size()==0 || arr[i] != s.peek()) {
s.push(arr[i]);
}
}
int[] answer = new int[s.size()];
for(int i=s.size()-1; i>=0; i--){
answer[i] = s.pop();
}
return answer;
}
'코딩테스트' 카테고리의 다른 글
[백준 / 실버4] 2839 : 설탕 배달 (JAVA) (0) | 2023.03.23 |
---|---|
[백준 / 실버5] 5555 : 반지 (JAVA) (0) | 2023.03.21 |
[백준 / 실버5] 11866 : 요세푸스 문제 0 (JAVA) (0) | 2023.03.18 |
[백준 / 실버5] 2581 : 소수 (JAVA) (0) | 2023.03.17 |
[백준 / 실버5] 1251 : 단어 나누기 (JAVA) (0) | 2023.03.17 |