메모리: 68.1 MB, 시간: 8.12 ms
코딩테스트 연습 > 코딩테스트 입문
정확성: 100.0
합계: 100.0 / 100.0
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
n ≤ 10,000| n | result |
|---|---|
| 24 | [1, 2, 3, 4, 6, 8, 12, 24] |
| 29 | [1, 29] |
입출력 예 #1
입출력 예 #2
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
class Solution {
public int[] solution(int n) {
int sqrt = (int) Math.sqrt((double) n);
List<Integer> list = new ArrayList<>();
list.add(1);
if (1 != n) {
list.add(n);
}
int i = 2;
while (i <= sqrt) {
if (n % i == 0) {
list.add(i);
if (n / i != i) {
list.add(n/i);
}
}
i++;
}
Collections.sort(list);
int[] answer = list.stream()
.mapToInt(Integer::intValue)
.toArray();
return answer;
}
}
class SolutionTest {
@Test
@DisplayName("n=24, [1, 2, 3, 4, 6, 8, 12, 24]")
void solution() {
int[] answer = {1, 2, 3, 4, 6, 8, 12, 24};
Assertions.assertThat(new Solution().solution(24)).isEqualTo(answer);
}
@Test
@DisplayName("n=29, [1, 29]")
void solution2() {
int[] answer = {1, 29};
Assertions.assertThat(new Solution().solution(29)).isEqualTo(answer);
}
}