less than 1 minute read

약수 구하기

문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 10,000

입출력 예

n result
24 [1, 2, 3, 4, 6, 8, 12, 24]
29 [1, 29]

입출력 예 설명

입출력 예 #1

  • 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.

입출력 예 #2

  • 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.

나의 풀이 코드

import java.util.*;
class Solution {
    public int[] solution(int n) {
        List<Integer> list = new ArrayList<>(); 
        // n을 1부터 n까지 나누기
        for(int i=1; i<=n; i++){
            if(n%i == 0){
                list.add(i);
            }
        }
        int[] answer = list.stream().mapToInt(i->i).toArray();
        
        return answer;
    }
}

반복문 안에서 n을 1부터 n까기로 나누어떨어지는 값만 추출한다.

배운점

class Solution {
    public int[] solution(int n) {
        return IntStream.rangeClosed(1, n)
                        .filter(i -> n % i == 0)
                        .toArray();
    }
}

다른 사람이 스트림으로 푼 코드이다.

INTStream으로 변환후,
1부터 n까지 정수를 생성후,
필터링후,
배열로 변환한다.

Leave a comment