import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(int[] arr) {
List<Integer> stk = new ArrayList<>();
for (int i = 0; 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);
}
}
}
int[] answer = new int[stk.size()];
for (int i = 0; i < stk.size(); i++) {
answer[i] = stk.get(i);
}
return answer;
}
}
첫번째 조건을보면 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더한다. 라는 조건 있다.
이를 나는 역으로 이용해 조건을 세개에서 두개로 줄여야겠다 생각했고 첫번째 요소에 그냥 arr[0]을 추가하고 반복문을 0이 아닌 1부터 시작했다. 그랬을 때 배열을 돌면서 빈 배열이 되는 경우가 생겼고 그 때문에 무한루프에 빠지게 됐었다.(결국 반복문 안에 배열이 비어있는지 확인하는 조건문이 추가 됨)
결국 다시한번 조건을 제대로 이해하고 시작해야겠다 생각했다..(요 조건 하나로 써먹은 시간이 꽤나 크다...)