본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] 약수 구하기

by 코딩하는 흰둥이 2023. 3. 11.
반응형

* 참고 : 약수는 어떤 수를 나누어 딱 떨어지는 수를 말한다.

 

  • 내 풀이
import java.util.stream.IntStream;
class Solution {
    public int[] solution(int n) {
        int[] answer = {};
        
        int count = 0;
        answer = new int[(int) IntStream.rangeClosed(1 , n).filter(value -> n % value == 0).count()];

        for (int i = 1; i <= n; i++) {
            if(n % i == 0){
                answer[count] = i;
                count++;
            }
        }
        
        return answer;
    }
}

answer 배열의 초기화를 위해 약수의 개수만을 구해서 나머지 값이 0일때마다 넣어주는 방식으로 풀이. 

 

import java.util.stream.IntStream;
class Solution {
    public int[] solution(int n) {
        int[] answer = {};

        answer = IntStream.rangeClosed(1, n).filter(i -> (n % i == 0)).toArray();

        return answer;
    }
}

return 에 IntStream.rangeClosed(1, n).filter(i -> (n % i == 0)).toArray(); 한줄로도 해결이 되나

주어진 변수와 틀을 변형하지 않고 싶어서 배열 초기화와 변수를 담아주고 return 함.

 

 

 

  • 다른 사람 풀이
import java.util.List;
import java.util.ArrayList;

class Solution {
    public int[] solution(int n) {
        List<Integer> answer = new ArrayList<>();
        for(int i=1; i<=n; i++){
            if(n % i == 0){
                answer.add(i);
            }
        }
        return answer.stream().mapToInt(x -> x).toArray();
    }
}



import java.util.*;
class Solution {
    public int[] solution(int n) {
        int[] answer = {};
        ArrayList<Integer> test_list = new ArrayList<>();
        for(int i = 1; i<=n; i++){
            if(n % i == 0) test_list.add(i);
        }
        answer = new int[test_list.size()];
        for(int j = 0; j<test_list.size(); j++){
            answer[j] = test_list.get(j);

        } 
        return answer;
    }
}

댓글