https://programmers.co.kr/learn/courses/30/lessons/12906?language=java 

 

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

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

programmers.co.kr

 

 

문제 분석

- 배열(arr)에 연속적으로 나타나는 숫자를 하나만 남기고 전부 제거한다.

- list를 사용하여 중복되지 않는 수를 add하고 정답 배열(answer)에 list의 값들을 추가한다.

 

 

문제 풀이

1. idx 변수를 통해 반복되어 나오는 숫자 중 첫 번째 인덱스를 나타낸다.

2. idx2 변수를 통해 반복되어 나오는 첫 숫자를 제외한 나머지 인덱스를 나타낸다.

3. while문을 통해 전체 배열의 길이만큼 탐색 후 중복되지 않는 숫자들만 list에 넣어준다.

4. list의 숫자들을 정답 배열(answer)에 넣고 출력한다.

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        ArrayList<Integer> list = new ArrayList<>();
        
        int idx = 0;
        int idx2 = 1;
                     
        while(true){
            if(idx>=arr.length || idx2>=arr.length){
                list.add(arr[arr.length-1]);
                break;
            }
            
            if(arr[idx]==arr[idx2]){
                idx2++;
                continue;
            }
            list.add(arr[idx]);
            idx = idx2;
            idx2 = idx+1;
        }
        int[] answer = new int[list.size()];
        for(int i=0;i<list.size();i++){
            answer[i] = list.get(i);
        }
        return answer;
    }
}

 

 

https://github.com/SOEUN2/Algorithm