Solution 1) 내 풀이
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부터 시작했다. 그랬을 때 배열을 돌면서 빈 배열이 되는 경우가 생겼고 그 때문에 무한루프에 빠지게 됐었다.(결국 반복문 안에 배열이 비어있는지 확인하는 조건문이 추가 됨)

결국 다시한번 조건을 제대로 이해하고 시작해야겠다 생각했다..(요 조건 하나로 써먹은 시간이 꽤나 크다...)

 

+ Recent posts