[프로그래머스] Level1_12903번: 같은 숫자는 싫어 (JAVA)

반응형
728x90
반응형

문제 12903번

https://programmers.co.kr/learn/courses/30/lessons/12906

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

 

 

 

 

 

 

풀이

package seohae.algorithm.level1;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Stack;

/**
 * 같은 숫자는 싫어
 * https://programmers.co.kr/learn/courses/30/lessons/12906
 */
public class Lesson_026_12906 {
    public static void main(String[] args) {
        Lesson_026_12906 lesson = new Lesson_026_12906();

        int[] arr = new int[5];
        arr[0] = 4;
        arr[1] = 4;
        arr[2] = 3;
        arr[3] = 3;
        arr[4] = 3;

        System.out.println(Arrays.toString(lesson.solution(arr)));
    }

    public int[] solution(int[] arr) {
        int[] answer = new int[arr.length];

        int size = 0; /* 마지막 결과에 담을 배열 size */
        int answerLastVal = 0; /* answer 배열의 마지막 요소 업데이트 */

        for (int i = 0; i < arr.length; i++) {
            // 처음 시작
            if (i == 0) {
                answer[i] = arr[i];
                answerLastVal = answer[i]; // 마지막 요소 update
                size++;
            }  else {
                // 두번째 부터는 이전의 요소와 확인
                if (answerLastVal != arr[i]) {
                    answer[i] = arr[i];
                    answerLastVal = answer[i]; // 마지막 요소 update
                    size++;
                } else {
                    /* -1은 배열에 있을 수 없으므로 지우기 위해 -1로 지정 */
                    answer[i] = -1;
                }
            }
        }

        // 요소 -1 제거
        int[] result = new int[size];
        int index = 0;
        for (int j : answer) {
            if (j != -1) {
                result[index] = j;
                index++;
            }
        }

        return result;
    }
}

 

반응형

Designed by JB FACTORY