import java.util.ArrayList;
class Solution {
public ArrayList<Integer> 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 if (stk.get(stk.size() - 1) >= arr[i]) {
stk.remove(stk.size() - 1);
}
}
return stk;
}
}
[처음에 좀 거지같이 풀던거]
import java.util.ArrayList;
class Solution {
public ArrayList<Integer> solution(int[] arr) {
ArrayList<Integer> stk = new ArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
if (stk.size() == 0) {
stk.add(arr[i]);
} else if (stk.get(stk.size() - 1) < arr[i]) {
stk.add(arr[i]);
} else if (stk.get(stk.size() - 1) >= arr[i]) {
stk.remove(stk.size() - 1);
}
}
return stk;
}
}
[다른 사람의 풀이]
Stack을 사용해서 풀기 시작하는 사람들...
pop push 잘 활용하면 나도 잘 할 수 있을 것 같다..
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stack = new Stack();
for(int i : arr ){
if(stack.isEmpty()){
stack.push(i);
continue;
}
while(!stack.isEmpty() && i <= stack.peek()) {
stack.pop();
}
stack.push(i);
}
int[] answer = new int[stack.size()];
for(int i=0; i<answer.length; i++) {
answer[answer.length - 1 - i] = stack.pop();
}
return answer;
}
}