728x90
문제 설명
정수 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합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Solution {
public int[] solution(int n) {
int count = 0;
for(int i=1;i<=n;i++) {
if(n%i==0) count++;
}
int[] answer = new int[count];
count = 0;
for(int i=1;i<=n;i++) {
if(n%i==0) answer[count++] = i;
}
return answer;
}
}
|
배열만 안다라고 하면 위와 같이 길어진다. 약수란 1 ~ n까지 나나어 떨어지는 수가 약수이다. 첫 번째 반복문은 약수의 개수를 구한다. 두 번쨰 반복문은 약수를 구해서 배열에 넣는다. |
1
2
3
4
5
6
7
8
9
10
11
|
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(int n) {
List<Integer> list = new ArrayList<>();
for(int i=1;i<=n;i++) {
if(n%i==0) list.add(i);
}
return list.stream().mapToInt(i->i).toArray();
}
}
|
리스트를 이용하여 약수를 구하고 stream을 이용하여 int 배열로 변환 하였다. |
1
2
3
4
5
6
|
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.range(1, n+1).filter(i -> n % i == 0).toArray();
}
}
|
IntStream으로 1~n까지의 스트림을 만들고 filter() 로 배수만 취한 후 toArray()로 배열로 만들었다. |
728x90
'프로그래머스 코딩(자바) > Level 0' 카테고리의 다른 글
Programmers Level 0 - 숫자 찾기 (0) | 2023.03.03 |
---|---|
Programmers Level 0 - 369 게임 (0) | 2023.03.03 |
Programmers Level 0 - 피자 나눠 먹기 (2) (0) | 2023.03.03 |
Programmers Level 0 - 외계 행성의 나이 (0) | 2023.03.03 |
Programmers Level 0 - 배열 회전 시키기 (0) | 2023.03.02 |