https://programmers.co.kr/learn/courses/30/lessons/12910
Arraylist를 만들어서 반복문을 통해 나누어 떨어지는 수를 추가하고 정렬해서 배열 크기 지정후 하나씩 대입하도록 일차원적인 생각으로 풀었다.
- 내 풀이
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = {};
ArrayList<Integer> list= new ArrayList<>();
for(int i=0;i<arr.length;i++){
if(arr[i]%divisor==0) list.add(arr[i]);
}
Collections.sort(list);
if(list.size()==0){
answer=new int[1];
answer[0]=-1;
}
else{
answer=new int[list.size()];
for(int i=0;i<list.size();i++){
answer[i]=list.get(i);
}
}
return answer;
}
}
- 다른 풀이
import java.util.Arrays;
class Solution {
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;
}
}
다른 사람 풀이를 보니 람다 형식의 함수로 간단하게 풀 수 있었다.
스트림 변환 후 filter()을 통해 필터링하고 다시 배열로 바꾸는 방식인 것 같다(?)
filter() => 조건에 따라 요소를 걸러낼 수 있는 함수
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[Java] 프로그래머스 > 같은 숫자는 싫어 (0) | 2022.01.27 |
---|---|
[Java] 프로그래머스 > 약수의 합 (0) | 2022.01.20 |
[Java] 프로그래머스 > 최대공약수와 최소공배수 (0) | 2022.01.16 |
[Java] 프로그래머스 > 소수찾기 (0) | 2022.01.13 |
[Java] 프로그래머스 > 자릿수 더하기 (0) | 2022.01.13 |
댓글