같은 숫자는 싫어_복습

하이솝·2026년 9월 3일

코테 · Stack_Queue

목록 보기
8/14

2026.09.03

문제 풀이

나의 코드


소요 시간: 15분
시간 복잡도: O(n)O(n)


import java.util.Deque;
import java.util.ArrayDeque;

class Solution {
    public int[] solution(int[] arr) {
        int cur;
        Deque<Integer> queue = new ArrayDeque<>();
        
        for (int i = 0; i < arr.length; i++) {
            cur = arr[i];
            if (queue.isEmpty() || queue.peekLast() != cur) {
                queue.offer(cur);
            }
        }
        int[] answer = new int[queue.size()];
        int idx = 0;
        while (!queue.isEmpty()) {
            answer[idx++] = queue.poll(); 
        }
        
        return answer;
    }
}

AI 코드


시간 복잡도: O(n)O(n)


코드 분석

size 변수를 이용해서 이전에 넣었던 값과 비교해서 같으면 저장하지 않고, 다를 때에만 저장한다.

Array.copyOf를 사용해서 실제 사용하는 배열의 크기만큼 자른다.


import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        int[] temp = new int[arr.length]; // 최악의 경우(중복 없음) 크기
        int size = 0;                     // 지금까지 담은 개수

        for (int num : arr) {
            // 비었거나 직전 값과 다를 때만 담음
            if (size == 0 || temp[size - 1] != num) {
                temp[size++] = num;
            }
        }

        return Arrays.copyOf(temp, size); // 실제 크기만큼 잘라서 반환
    }
}

문제 풀이 후기

Level 1 문제 치고는 난이도가 꽤 있는 것 같다는 생각이 들었다.

지금은 코딩 테스트를 하지 않은지 꽤 돼서 예전만 못하다고 생각했는데
예전에 풀지 못했던 문제를 생각보다 쉽게 풀었던 것을 보아
기복이 꽤 심한 편이라는 생각이 든다.

기복이 있음에도 큰 영향을 받지 않을 정도로 열심히 해야 할 것 같다.

0개의 댓글