문제
내가 작성한
오답
:3번째 조건에 따르면 stk의 마지막 원소가 크거나 같으면 마지막 원소를 제거하라고 했지 i++하라고 안했다

class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> stk = new ArrayList<>();
for(int i=0; i<arr.length; i++){
if(stk.isEmpty()) stk.add(arr[i]);
else {
if(stk.get(stk.size()-1)<arr[i]) stk.add(arr[i]);
else stk.remove(stk.size()-1);
}
}
return stk.stream().mapToInt(i->i).toArray();
}
}정답
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> stk = new ArrayList<>();
int i = 0;
while(i<arr.length){
if(stk.isEmpty()) {
stk.add(arr[i]);
i++;
}
else{
if(stk.get(stk.size()-1)<arr[i]) {
stk.add(arr[i]);
i++;
}else {
stk.remove(stk.size()-1);
}
}
}
return stk.stream().mapToInt(a->a).toArray();
}
}다른 사람들의 정답
: stack이용
import java.util.*;
class Solution {
public Stack<Integer> solution(int[] arr) {
Stack<Integer> stack = new Stack<>();
int i = 0;
while (i < arr.length) {
if (stack.empty() || stack.peek() < arr[i]) {
stack.push(arr[i]);
i++;
} else if (stack.peek() >= arr[i]) {
stack.pop();
}
}
return stack;
}
}Share article