Programmers
[Java] 프로그래머스 Lv.1 : 나누어 떨어지는 숫자 배열
Woogie
2022. 2. 21. 21:12
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12910
코딩테스트 연습 - 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하
programmers.co.kr
2. 풀이
- 문제의 핵심은 간단하다. 배열과 정수를 파라미터로 받아 각 배열 안에 값을 가지고 파라미터로 받은 정수와 나누었을 때 딱 나누어 떨어지는 값을 찾아 배열에 담고, 오름차순으로 정렬해서 return 하면 되고, 나누어 떨어지는 값이 없으면 -1을 담아 return 한다.
- 배열의 크기를 조절하기 위해 count 변수에 나누어 떨어지는지 비교한고, count에 1씩 증가시킨다.
- 나누어 떨어지는 값이 없어 count 가 0이라면 -1을 새로운 배열에 담아 리턴하고, 그렇지 않으면 count 된 크기만큼 배열을 만들고, 다시 count를 초기화한다. (count에 값을 다시 담기 위한 초기화)
- 다시 배열과 정수 값을 비교해서 해당하면 count 번째에 그 값을 넣고 count를 1씩 증가시키고 정렬 후, return
3. 코드
package programmers;
import java.util.Arrays;
public class Ex_DividedNumberArrangement {
public static void main(String[] args) {
int[] arr = new int[]{2, 36, 1, 3};
int divisor = 1;
System.out.println(Arrays.toString(solution(arr, divisor)));
}
public static int[] solution(int[] arr, int divisor) {
int count = 0;
for (int k : arr) {
if (k % divisor == 0) {
count++;
}
}
if (count == 0) {
return new int[]{-1};
} else {
int[] numArr = new int[count];
count = 0;
for (int j : arr) {
if (j % divisor == 0) {
numArr[count] = j;
count++;
}
}
Arrays.sort(numArr);
return numArr;
}
}
}