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 이상인 배열입니다.
*/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} |
꼼수? 로 풀었다...
알고리즘 자체는 어렵지 않다. 단지 내가 고민했던 것은 결과들이 순서대로 나오게 하는 것, 정렬 때문에 조금 고민하였으나
다른 풀이들을 보면 크게 고민안한것 같다.
제일 신박했던 풀이는
return Arrays.stream(array).filter(factor -> factor % divisor == 0).toArray();
람다식 활용 ㄷㄷ...