less than 1 minute read

연속되는 숫자를 제거한 배열구하기

public static int[] solution(int []arr) throws Exception {
        int[] answer = {};
        Integer[] answer1 = {};
        boolean con1 = arr.length<=1000000;  
        Integer arrI[] = Arrays.stream(arr).boxed().toArray(Integer[]::new); 
        
        if(con1){//제한사항 배열크기
            ArrayList<Integer> arrayList = new ArrayList<Integer>(Arrays.asList(arrI));
            ArrayList<Integer> resArr = new ArrayList<Integer>();
            ArrayList<Integer> removeArr = new ArrayList<Integer>();
            int nextNum;
            for(int i=0;i<arrayList.size();i++){
                Integer curNum = (Integer)arrayList.get(i);
                if(i<(arrayList.size()-1)){
                    nextNum=(Integer)arrayList.get(i+1);
                }else{
                    break;
                }
                if(curNum>0&&curNum<10){
                    if(curNum==nextNum){
                        removeArr.add(i);
                    }
                }else{
                    throw new Exception("배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수:"+curNum+", i :"+i);
                }
            }
            Integer[] rmvArr = removeArr.toArray(new Integer[removeArr.size()]);
            Arrays.sort(rmvArr, Comparator.reverseOrder());
            if(rmvArr!=null && rmvArr.length>0){
                for(Integer idx:rmvArr){
                    arrayList.remove((int)idx);
                }
            }
            if(!arrayList.isEmpty()){
                answer1 = arrayList.toArray(new Integer[arrayList.size()]);
            }
            answer = Arrays.stream(answer1).mapToInt(Integer::intValue).toArray(); 
            
        }else{
            throw new Exception("배열 arr의 크기 : 1,000,000 이하의 자연수");
        }
        
        
        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println(Arrays.toString(answer));
        
        return answer;
    }

Comments