알고리즘

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

건뱅 2019. 4. 18.
반응형

<문제>

 

<작성 코드>

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
import java.util.Scanner;
 
public class Solution3 { // 나누어 떨어지는 숫자 배열
 
    public static int[] solution(int[] arr, int divisor) {
        int[] answer = { -1 };
        int returnsize = 0;
        for (int k = 0; k < arr.length; k++) { // 리턴될 배열의 크기를 지정하기 위함.
            if (arr[k] % divisor == 0) {
                returnsize++;
            }
        }
        if (returnsize == 0) {
        } else {
            answer = new int[returnsize];
        }
        for (int i = 0, j = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
 
                answer[j] = arr[i];
                j++;
            }
        }
        Arrays.sort(answer); // sort()함수로 배열 정렬(기본값 오름차순)
        return answer;
    }
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] sample = { 82163 };
        System.out.println("array: " + Arrays.toString(sample));
        while (true) {
            System.out.println("input divisor:");
            int div = scan.nextInt();
            if (div == 0) {
                break;
            }
            System.out.println("return: " + Arrays.toString(solution(ss, div)));
        }
    }
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 
 

<결과화면>

 

알고리즘 자체는 간단했지만 배열의 크기가 유동적이지 못해 오류가 있었다. 이를 생각하여 배열크기를 알맞게 선언해주어 오류를 안나도록 알고리즘을 구현하였다. 오름차순 정렬은 배열의 sort() 함수를 이용하였다.

 

*sort() 함수는 배열을 자동으로 오름차순으로 정렬시켜주는 정렬함수(한글, 영어, 숫자 etc)

sort()함수로 정렬 후 reverseArrayInt() 함수를 사용하여 내림차순으로도 정렬이 가능하다.

 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException 오류

  - 선언된 배열의 크기보다 작거나 큰 값이 들어갈때 나오는 오류

반응형

댓글