
내가 작성한 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> stk = new ArrayList<>(); // 정답을 담을 임시 리스트
for (int i = 0; i < arr.length; i++) {
// 리스트가 비어있으면 추가
if(stk.isEmpty()) {
stk.add(arr[i]);
continue;
}
// 리스트가 비어있지 않으면 마지막 원소와 비교 후 추가 또는 삭제제
if(stk.get(stk.size() - 1) == arr[i]) {
stk.remove(stk.size() - 1);
} else {
stk.add(arr[i]);
}
}
// 리스트가 비어있으면 -1을 반환, 아니면 리스트를 배열로 변환하여 반환
return stk.isEmpty() ? new int[]{-1} : stk.stream().mapToInt(i -> i).toArray();
}
}
다른 사람의 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stk = new Stack<>(); // 정답을 담을 스택
for (int i = 0; i < arr.length; i++) {
if (stk.isEmpty()) {
stk.push(arr[i]); // 스택이 비어 있으면 현재 값을 추가
continue;
}
if (stk.peek() == arr[i]) { // 스택의 최상단 값과 현재 값이 같으면 제거
stk.pop();
} else {
stk.push(arr[i]); // 그렇지 않으면 값을 추가
}
}
// 스택이 비어 있으면 [-1] 반환, 아니면 배열로 변환
return stk.isEmpty() ? new int[]{-1} : stk.stream().mapToInt(i -> i).toArray();
}
}
- 내가 작성한 코드와 똑같지만
List
대신Stack
을 사용
Share article