Java/Programmers

[Lv.1]같은 숫자는 싫어

GLOWWW 2023. 1. 21. 15:51

package Lv_1;

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

public class 같은숫자는싫어 {
    public static List<Integer> solution(int[] arr) {
        List<Integer> answer = new ArrayList<>();
        Stack<Integer> tmp = new Stack<>();
        tmp.push(arr[0]);
        for (int i = 1; i < arr.length; i++) {
            if (tmp.isEmpty()) {
                tmp.push(arr[i]);
            }
            else if (arr[i] == tmp.get(0)) {
                tmp.push(arr[i]);
            } else {
                answer.add(tmp.pop());
                tmp.clear();
                tmp.push(arr[i]);
            }
        }
        answer.add(tmp.pop());
        return answer;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1, 1, 3, 3, 0, 1, 1};
        List<Integer> result = solution(arr);
        System.out.println(result);
    }
}

그런데 이렇게 풀고나서.. 다른 사람의 풀이를 보고나니 훨씬 쉬운방법이 있었다.

arr배열에 들어가는 숫자는 0부터 9까지로, 그 안에 들어갈 수 없는 숫자를 변수로 잡아준 후 반복문을 수행하여 같지않은 숫자만 리스트에 담아주는것 이었다. 같지않으면 리스트에 담아주고 그 변수는 같지 않은 숫자로 변경시켜준다.