알고리즘/프로그래머스

[프로그래머스] 나누어 떨어지는 숫자 배열 for JAVA

정석이 2022. 2. 16. 18:16

 

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

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하

programmers.co.kr

 

 

 

 

문제

 

 

 


 

 

arrayList에 나누어 떨어지는 숫자만 넣고 배열에 다시 넣어주는 형태로 했다.

 

 

 

 

코드

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer;
        ArrayList<Integer> arrayList = new ArrayList<>();
        
        for(int i : arr)
            if(i % divisor == 0) arrayList.add(i);
        
        
        if(arrayList.size() == 0){
            answer = new int[1];
            answer[0] = -1;
        }
        else{
            answer = new int[arrayList.size()];
            int index = 0;
            for(int i : arrayList){
                answer[index++] = i;
            }
        }
        
        Arrays.sort(answer);
        
        return answer;
    }
}

 

 

직관적이고 뭔가 장황한 코드로 보인다.

 

 

 

 


 

다른 사람 코드

 

 

 

 

 

stream을 많이 사용하는구나...

 

효율은 그리 좋지 않다고 들어서 사용할지 모르겠지만 알아둬야겠다.

 

 

예전에는 순차 처리를 위해 ArrayList에 Iterator로 hasNext()를 사용하여 처리하였는데

 

JAVA 8에서 새로 나온 것이라고 한다. (저번에도 봤지만)

 

 

블로그 정리 대박! https://coding-factory.tistory.com/574

 

 

 

 

그리고 answer.length == 0 이면

 

 

answer = new int[] {-1};

 

 

이거 너무 좋은 것 같다. 알아두기!!!!