문제
풀이
- 날것 버전
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> result = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
if(result.isEmpty() || i == 0 || arr[i] != result.get(result.size() - 1)) {
result.add(arr[i]);
} else if(arr[i] == result.get(result.size() - 1)) {
result.remove(result.size() - 1);
}
}
return result.isEmpty() ? new int[] {-1} : result.stream().mapToInt(Integer::intValue).toArray();
}
}
- 정리 버전
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> result = new ArrayList<>();
for (int num : arr) {
if (result.isEmpty() || num != result.get(result.size() - 1)) {
result.add(num);
} else {
result.remove(result.size() - 1);
}
}
return result.isEmpty() ? new int[] {-1} : result.stream().mapToInt(Integer::intValue).toArray();
}
}
- 다른 풀이
import java.util.Stack;
class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stack = new Stack<>();
for(int num : arr) {
if(!stack.isEmpty() && num == stack.peek()) {
stack.pop();
} else {
stack.push(num);
}
}
return stack.isEmpty() ? new int[] {-1} : stack.stream().mapToInt(i -> i).toArray();
}
}
출처
https://school.programmers.co.kr/learn/courses/30/lessons/181859
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] Lv.0 / 배열의 길이를 2의 거듭제곱으로 만들기 / Java (0) | 2024.02.14 |
---|---|
[Programmers] Lv.0 / 무작위로 K개의 수 뽑기 / Java (0) | 2024.02.07 |
[Programmers] Lv.0 / 빈 배열에 추가, 삭제하기 / Java (0) | 2024.02.05 |
[Programmers] Lv.0 / 배열의 원소만큼 추가하기 / Java (0) | 2024.02.02 |
[Programmers] Lv.0 / 세 개의 구분자 / Java (0) | 2024.02.01 |
댓글