프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 약수 구하기(Java)

Sigfriede 2023. 4. 2. 02:52

  문제 설명

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

 

  제한사항

  • 1 <= n <= 10,000

 

  입출력 예

n result
24 [1, 2, 3, 4, 6, 8, 12, 24]
29 [1, 29]
import java.util.Arrays;

class Solution {
    public int[] solution(int n) {
        int[] answer = new int[n];
        int index = 0;
        for (int i = 1; i <= n; i++) {
            if (n % i == 0) {
                answer[index++] = i;
            }
        }
        return Arrays.copyOf(answer, index);
    }
}

  for문이 i = 1부터 시작하여 n보다 작거나 같을 때까지 i가 증가합니다. n을 i로 나누어 0으로 맞아떨어지면 i는 n의 약수라는 뜻이므로,  answer 배열에 i를 할당합니다. index는 0부터 시작하여 약수를 구할 때마다 1씩 증가하므로 이는 answer 배열의 크기를 지정할 때 쓰입니다. Arrays.copyOf를 통하여 answer 배열을 index만큼 복사하여 반환합니다.

  배열을 복사하지 않고 ArrayList를 통해 새 배열을 생성하고 값을 추가하는 방법도 있겠습니다.