[프로그래머스] Lv.0 배열 만들기 6.java

hgghfgf·2023년 6월 10일
0

프로그래머스

목록 보기
139/227

배열 만들기 6.java

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int[] arr) {
        List<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.remove(stk.size() - 1);
                i++;
            } else {
                stk.add(arr[i]);
                i++;
            }
        }

        if (stk.isEmpty()) {
            return new int[]{-1};
        }

        int[] answer = new int[stk.size()];
        for (int j = 0; j < stk.size(); j++) {
            answer[j] = stk.get(j);
        }

        return answer;
    }
}

i가 arr의 길이보다 작은 동안 아래 작업을 반복합니다.
stk이 빈 배열인 경우: arr[i]를 stk에 추가하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같은 경우: stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 다른 경우: stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다.
작업을 마친 후, stk 리스트가 비어있는 경우 -1을 포함한 배열을 반환합니다.
그렇지 않은 경우, stk 리스트의 원소를 배열 answer로 복사하여 반환합니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

0개의 댓글