약수 구하기
문제 #
정수 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.*;
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 j = 0; j<list.size(); j++){
answer[j] = list.get(j);
}
return answer;
}
}
- 루프 내에서 각 정수는 n을 정수로 나눈 나머지가 0인지 확인하여 n의 약수인지 확인합니다. 정수가 약수이면 list ArrayList에 추가됩니다.
- i를 0부터 시작할 경우 n을0으로 나누게 되어 오류가 발생한다.
- list와 동일한 크기인 answer배열에 list값을 넣는다.
다른 사람의 풀이 #
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();
}
}
- 새로운 list를 구현하는 대신 answer을 list형태로 선언하였다.
- 또한 ArrayList대신 List를 이용하여 더 유연하게 이용가능하다.
- 스트림을 이용하여 배열을 Int형으로 변환하였으며 그 값을 바로 return하였다.
관련개념 학습 #
- 관련 개념을 찾아서 공부한 내용을 적는다.
ctrl + p
로 내가 필기한 내용 중에서 관련내용이 있는지 찾아서 그 페이지의 링크를 복사하여 붙혀넣는다.- 필기 페이지에도 이 문제의 링크를 복사하여 “관련 문제"라고 써놓고 붙혀넣는다.