Algorithms/- 프로그래머스

프로그래머스 - 같은 숫자는 싫어 [자바]

자굿 2022. 2. 2. 11:28
 

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

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

programmers.co.kr

 

정답

import java.util.*;
import java.util.stream.*;

public class Solution {
    public int[] solution(int []arr) {

        List<Integer> list = new ArrayList<>();

        int a = -1;
        for(int n : arr){
            if(a != n){
                list.add(n);
                a = n;
            }
        }

        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

분석

  • 중복제거 문제
// 굳이 a == -1 초기 값일때 if문으로 분기 처리할 이유가 없음.
for(int n : arr){
    if(a == -1){
        list.add(n);
        a = n;
    }else{
        if(a != n){
            list.add(n);
            a = n;
        }
    }
}

//아래와 같이 변경
for(int n : arr){
    if(a != n){
        list.add(n);
        a = n;
    }
}
반응형