[PROGRAMMERS] 나누어 떨어지는 숫자 배열
7985 단어 programmersprogrammers
💡 나의 풀이
public int[] solution(int[] arr, int divisor) {
int[] answer = new int[arr.length];
int count = 0;
int fail = 0;
for(int i = 0; arr.length > i; i++){
if(arr[i] % divisor == 0){
answer[count] = arr[i];
count++;
}else{
fail++;
}
}
if(fail == arr.length){
return new int[]{-1};
}
answer = Arrays.stream(answer).filter(x -> x != 0).toArray();
Arrays.sort(answer);
return answer;
}
- 반복문을 돌리면서 배열의 각 항목마다 주어진 divisor로 나눈다.
- 나누어 떨어진다면 answer 배열에 추가하고 그렇지 않다면 fail에 1을 더한다.
- 반복문이 끝나고 만약 fail과 arr의 길이가 같다면 배열의 항목이 모두 나누어 떨어지지 않은 것이므로 int 배열에 -1을 넣어 반환한다.
- 나누어 떨어지는게 있다면 Arrays이 filter를 이용해 배열의 값이 0인 것을 거르고 반환한다.
💡 다른 사람의 풀이
public int[] solution(int[] arr, int divisor) {
int[] answer = Arrays.stream(arr).filter(factor -> factor % divisor == 0).toArray();
if(answer.length == 0) answer = new int[] {-1};
java.util.Arrays.sort(answer);
return answer;
}
- Arrays의 filter를 사용해서 항목이 divisor로 나누어 떨어지는 것들을 배열로 만들어 answer에 넣어준다.
- 만약 answer의 길이가 0이라면 나누어 떨어지는게 없는 것이니 -1을 반환한다.
- 그렇지 않다면 Arrays의 sort로 오름차순 정렬해준다.
다른 사람의 풀이처럼 Arrays의 filter로 처음에 나누어지는 수를 배열로 만들었으면 좋았을텐데 나는 뒷 부분에 0을 제외할 때 써서 너무 아쉬웠다. 처음에 썼으면 fail 변수를 선언해서 나누어지지 않은 횟수를 배열 길이와 비교할 일도 없었을텐데 아쉬움이 많이 남는다. 다음에는 제출하기 전에 더 효율적이게 푸는 방법은 없을지 더 고민해봐야겠다.
Author And Source
이 문제에 관하여([PROGRAMMERS] 나누어 떨어지는 숫자 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@3hee_11/PROGRAMMERS-나누어-떨어지는-숫자-배열저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)