본문 바로가기

개발/JAVA

[JAVA] level1. 나누어 떨어지는 숫자 배열 / Arrays.sort()


 

나누어 떨어지는 숫자 배열

 

1. 처음 소스

package programmers_uni;

 

class Solution {

    public static int[] solution(int[] arr, int divisor) {

        int i;

        int n=0;

        int cnt=0;

        for(i=0;i<arr.length;i++){

            if(arr[i]%divisor==0){

                n++;

            }

        }

                     

        int[] answer= new int[n];

                     

        for(i=0;i<arr.length;i++){

            if(arr[i]%divisor==0){

                answer[cnt]=arr[i];

                cnt++;

            }

        }

        if(cnt==0){

           answer[cnt]=-1;

        }

 

        return answer;

     }

 

     public static void main(String[] args) {

        int[] arr= {5,9,7,10};

        int divisor= 5;

        System.out.print(solution(arr, divisor));

     }    

}

 

1-1.결과

[I@3d4eac69

 

-> 문자열 배열을 리턴할때에는 그대로 리턴하면 안됨.




 

2. 두 번째 소스

import java.util.Arrays;

 

class Solution {

 public int[] solution(int[] arr, int divisor) {

int i;

int n=0;

int cnt=0;

for(i=0;i<arr.length;i++){

   if(arr[i]%divisor==0){

                    n++;

             }

          }

                          

          int[] answer = new int [n];

                          

          for(i=0;i<arr.length;i++){

              if(arr[i]%divisor==0){

                     answer[cnt]=arr[i];

                     cnt++;

              }

          }

     

          if(cnt==0){

            answer[cnt]=-1;

          }

      Arrays.sort(answer);

     

      return answer;

  }

}



2-2.결과





3. 성공 소스

import java.util.Arrays;

 

class Solution {

public int[] solution(int[] arr, int divisor) {

        int i;

          int n=0;

          int cnt=0;

          for(i=0;i<arr.length;i++){

               if(arr[i]%divisor==0){

                     n++;

               }

          }

                          

          int[] answer = new int [n];

                          

          for(i=0;i<arr.length;i++){

               if(arr[i]%divisor==0){

                       answer[cnt]=arr[i];

                       cnt++;

               }

          }

     

          if(cnt==0){

              int[] ans = new int [1];           

   //-1만을 담을 배열을 따로 생성해야 에러 발생 방지

              ans[cnt]=-1;

              answer=ans;

          }

         Arrays.sort(answer);

     

         return answer;

  }

}

 


4. 다른 해결 방안

 

- 배열에 원소를 쉽게 추가하기 위해 ArrayList 사용

- 배열의 원소를 for문 없이 쉽게 출력하기 위해 Arrys.toString(배열) 사용