1일 1문제, 프로그래머스

나누어 떨어지는 숫자 배열

Hoguz 2018. 6. 5. 09:14

/*array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.

divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.


제한사항

arr은 자연수를 담은 배열입니다.

정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.

divisor는 자연수입니다.

array는 길이 1 이상인 배열입니다.

*/



public static int[] solution(int[] arr, int divisor) {
List<Integer> answer = new ArrayList();
for(int i : arr) {
if(i % divisor == 0) {
answer.add(i);
}
}
if (answer.size() == 0) {
answer.add(-1);
}
Collections.sort(answer);
int [] ans = new int[answer.size()];
int num = 0;
for(int i : answer){
ans[num++] = i;
}
return ans;
}
public static void main(String[] args) {
int [] arr = {10,6,9,5};
for (int i : solution(arr, 5)) {
System.out.println(i);
}
view raw divisor hosted with ❤ by GitHub


꼼수? 로 풀었다...

알고리즘 자체는 어렵지 않다. 단지 내가 고민했던 것은 결과들이 순서대로 나오게 하는 것, 정렬 때문에 조금 고민하였으나

다른 풀이들을 보면 크게 고민안한것 같다.


제일 신박했던 풀이는


 return Arrays.stream(array).filter(factor -> factor % divisor == 0).toArray();


람다식 활용 ㄷㄷ... 

댓글수0