송민준의 개발노트

프로그래머스-level1-나누어 떨어지는 숫자 배열 본문

알고리즘/프로그래머스

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

송민준 2019. 11. 4. 11:13

https://programmers.co.kr/learn/courses/30/lessons/12910

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열 | 프로그래머스

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 입출력 예 arr divi

programmers.co.kr

나의 코드

Arrays.sort를 활용해서 정렬을 먼저 하였고

divisor로 나누어떨어지는 것을 배열에 저장하였다.

최종적으로 값이 0이 아닌 값들은 제외하고 배열을 새로 만들어 반환함.

나누어지는게 하나도 없는 경우는 boolean을 활용해서 -1 반환.

import java.util.Arrays;
class Solution {
  public int[] solution(int[] arr, int divisor) {
      int[] answer = new int[arr.length];
	      boolean check = false;
	      Arrays.sort(arr);
	      int cnt = 0;
	      for(int i=0; i< arr.length; i++) {
	    	  if(arr[i]%divisor == 0) {
	    		  check = true;
	    		  answer[cnt] = arr[i];
	    		  cnt++;
	    	  }
	      }
	      int length = 0;
	      for(int i =0; i < answer.length; i++) {
	    	  if(answer[i] == 0) {
	    		  break;
	    	  }
	    	  length++;
	      }
	      
	      
	      if(check == false) {
	    	  return new int[] {-1};
	      }
	      return Arrays.copyOfRange(answer, 0, length);
  }
}

 

참고할 코드

한줄이면 된다..

Arrays.stream에 대해서 공부가 필요할듯!