알고리즘 - 나누어 떨어지는 숫자 배열

Wonhee 📘·2022년 3월 14일
0

JAVA_알고리즘

목록 보기
9/21
post-thumbnail

알고리즘 문제 "나누어 떨어지는 숫자 배열"를 풀어보았습니다.

문제 설명

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

제한사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.

문제 풀이

문제를 해결하면서 핵심적인 부분은 arr의 값을 divisor로 나누어주기,
나누 값을 배열에 넣기,
배열을 오름차순으로 넣기 순서로 진행하면 될것이다.
arr을 divisor로 나누어주는 이유는 return값에 담아야 하는 값은 divisor에 배수가 되기 때문에 나누어 주는 것이며, divisor로 나누었을때 나머지가 0인 것이 divisor에 배수가 되기 때문이다.

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer = {};
        // a1 이라는 ArrayList 를 선언
        ArrayList<Integer> a1 = new ArrayList<Integer>();
        for(int i = 0; i <arr.length; i++){
            if(arr[i]%divisor == 0){
                a1.add(arr[i]);
                // a1 리스트에 나누어 떨어지는 값 넣기
            }
        }
        // 위 for문 실행시 담긴 값이 없으면
        if(a1.isEmpty()){
        	// ai에 -1를 담아준다.
            a1.add(-1);       
        }
        // 배열의 크기를 지정
        answer = new int[a1.size()];
        //a1 리스트를 answer 배열에 넣기
        for(int i = 0; i<a1.size() ; i++){
        	//ai에 있는 값을 index0번부터 answer에 담는다.
            answer[i] = a1.get(i);
        }
        //sort()로 배열에 담겨있는 값을 오름차순으로 정렬
        Arrays.sort(answer);
        return answer;
    }
}
profile
오늘 걷지 않으면 내일은 뛰어야한다 🚶‍♂️ 🏃‍♀️

0개의 댓글