약수구하기
문제 설명
정수 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) {
ArrayList <Integer> list = new ArrayList();
for(int i=1; i<=n; i++) {
if(n%i==0) {
list.add(i);
}
}
int[] answer = new int[list.size()];
for(int i=0; i<answer.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
약수를 받는 배열인 answer[]에 약수의 개수를 미리 알수 없어 answer배열을 선언하기전
list를 사용하여 약수를 받아와서 answer[]배열에 넘겨주는 방법을 사용하였다.
Arraylist에 for문을 이용해 약수를 넣어주었다.
정수 n이 for문의 i로 나누어떨어지면 i가 n의 약수가 되므로 나누어 떨어질때마다 i를 list에 추가.
answer배열을 list.size만큼의 배열 선언.
2번째 for문에서 list의 값을 하나씩 불러와 answer배열에 넣어주고 반환.
매우 쉬운 문제