프로그래머스 : 같은 숫자는 싫어

김아무개·2023년 3월 13일
0

프로그래머스

목록 보기
1/41

문제 설명!


나의 접근 방법

ZeroBase 강의에서 들었던 내용 중에 비슷한 내용이 있었기 때문에,
너무 어렵지 않게 풀 수 있었다.
(조금 어려웠음)

어렴풋이 기억나기로는 강사님 코드가 훨씬 더 간결하고 쉬웠던것 같다.
강의를 다시 찾아서 학습해보고 내 코드 리팩토링 해야겠다! 💪

내 코드

public class Main {
    public static void main(String[] args) {
        // 23.03.13 선택문제 programmers
        int[] a = new int[]{1,1,3,3,0,1,1};
        solution(a);
    }
    public static int[] solution(int[] arr) {
        int[] answer = {};
        int now = 0, next = 1;

        while (true) {
            if (next == arr.length) break;
            if (arr[now] == arr[next]) {
                next++;
            } else {
                arr[++now] = arr[next++];
            }
        }
        answer = new int[now + 1];
        for (int i = now; i >= 0; i--) {
            answer[i] = arr[i];
        }
        return answer;
    }
}

🔻 강의 수강 후 리팩토링 고고 🔻

public class Main {
    public static void main(String[] args) {
        // 23.03.13 선택문제 programmers
        int[] a = new int[]{1,1,3,3,0,1,1};
        solution(a);
    }
    public static int[] solution(int[] arr) {
        int[] answer = {};
        int idx = 0;

        for (int n: arr) {
            if (idx == 0 || n != arr[idx - 1])
                arr[idx++] = n;
        }
        
        answer = new int[idx--];
        for (int i = idx; i >= 0; i--) {
            answer[i] = arr[i];
        }
        return answer;
    }
}

핵심 1

int idx = 0;

for (int n: arr) {
    if (idx == 0 || n != arr[idx - 1])
        arr[idx++] = n;
}

idx가 0 이거나, n이 이전 숫자와 다르면
arr[idx]에 n 입력하고 idx += 1

profile
Hello velog! 

0개의 댓글