알고리즘/프로그래머스

나누어 떨어지는 숫자 배열(JAVA)

mrban 2022. 1. 17. 18:04

1. 문제

매개변수 array의 요소들 중 매개변수 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수를 만드시오. 단, divisor로 나누어 떨어지는 요소가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

2. 제한
arr은 자연수를 담은 배열입니다.
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. 즉, 같은 숫자들이 반복되지 않습니다.
divisor는 자연수입니다.
array는 길이 1 이상인 배열입니다.
 
3. 정답
import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        ArrayList<Integer> result = new ArrayList<Integer>();

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
                result.add(arr[i]);
            }
        }
        if (result.size() == 0) {
            int[] answer = {-1};
            return answer;
        }
        else {
            int[] answer = new int[result.size()];
            for (int i = 0; i < result.size(); i++) {
                answer[i] = result.get(i);
            }
            Arrays.sort(answer);
            return answer;
        }
    }
}

4. 설명

4-1. 매개변수 arr 배열에서 divisor로 나눠떨어지는 값은 상황에 따라 달라질 수 있기 때문에 arr배열에서 divisor로 나눠떨어지는 값들을 result리스트에 집어넣었다.

4-2. 만약 result의 크기가 0이라면 어떤 값도 나눠떨어지지 않는 경우이기 때문에 이럴 떈 -1만 들어있는 배열을 만들고 return한다.

4-3. 반면에 result의 크기가 0보다 크다면 현재 함수에서 return하는 값의 형태는 배열이어야하므로 리스트에 들어있는 값들을 answer라는 배열에 for문을 이용하여 하나씩 집어넣어준다.

4-4. sort함수를 활용해 배열 answer를 오름차순으로 정렬해준 뒤에 return한다.

 

5. 참고

5-1. 배열의 크기가 불확실할때는 굳이 배열로 해결하려고 고집하기 보다는 리스트를 만들어 사용하는 것이 훨씬 편하다. ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트입니다. 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있다.

5-2. 리스트를 선언할 때는 ArrayList<Integer> result = new ArrayList<Integer>(); 이런식으로 선언한다. ArrayList라는 클래스를 활용해 자료형이 Integer인 인스턴스 result를 만드는 것이다. 자료형을 언급하지 않아도 되긴 하지만 값을 뽑아내려면 별도의 캐스팅 연산이 필요하고 만일 잘못된 타입으로 캐스팅 된다면 오류가 발생할 확률이 존재해 자료형을 명시하는 것이 좋다.

5-3. 리스트에 요소를 추가하고 싶으면 .add()를 사용한다.

5-4. 리스트의 요소값을 불러오고 싶으면 .get()를 사용한다.

'알고리즘 > 프로그래머스' 카테고리의 다른 글

문자열 다루기 기본(JAVA)  (0) 2022.01.17
문자열 내 p와 y의 개수(JAVA)  (0) 2022.01.17
2016년(JAVA)  (0) 2022.01.17
내적(JAVA)  (0) 2022.01.17
부족한 금액 계산하기(JAVA)  (0) 2022.01.15