ディジタル配列


質問する


問題の説明
arrayの各要素で、昇順で配列された配列の係数で区切られた値を返す関数を作成します.
要素が除数で区切られていない場合は、配列に-1を入れて返します.
せいげんじょうけん
arrは自然数を含む配列である.
整数i,jの場合、i≠jの場合、arr[i]≠arr[j]となる.
除数は自然数です.
arrayは長さが1より大きい配列です.
I/O例
arr divisor return
[5, 9, 7, 10] 5 [5, 10][2, 36, 1, 3] 1 [1, 2, 3, 36][3,2,6] 10 [-1]
I/O例説明
I/O例#1
arrの5つの要素のうち5つは5と10です.したがって、[5,10]を返します.
I/O例#2
arrのすべての要素は1で区切られています.元素を昇順に並べて[1,2,3,36]を返します.
I/O例#3
3、2、6は10に分けられない.[1]を返します.分離された要素がないためです.

コード#コード#

import java.util.ArrayList;
import java.util.Collections;

class Solution {
    // 1. 반환타입을 ArrayList<Integer>로 변경.
    public ArrayList<Integer> solution(int[] arr, int divisor) {
        
        // 2. ArrayList 객체 생성.
        ArrayList<Integer> a = new ArrayList<Integer>();
        
        // 3. arr 배열을 탐색하며 divisor과 나눈 나머지가 0인 경우 ArrayList 객체에 삽입.
        for(int i=0;i<arr.length;i++){
            if(arr[i] % divisor == 0) a.add(arr[i]);
        }
        
        // 4. 위 과정을 마쳤을 때 ArrayList객체의 요소가 비어있다면 -1을 삽입.
        if(a.isEmpty()) a.add(-1);
        
        // 5. 오름차순 정렬.
        Collections.sort(a);
        
        return a;
    }
}