-
[Javascript] Codility Lesson10 - CountFactors알고리즘, 자료구조/Codility 2022. 8. 20. 19:45
문제: https://app.codility.com/programmers/lessons/10-prime_and_composite_numbers/count_factors/
문제 요약
- N = D * N 이 성립하면 D는 N의 인수다.
- N이 주어졌을 때 N의 인수 개수를 구하여라
- N의 범위는 1 ~ 2,147,483,647이며, N과 D는 자연수이다.
풀이
function solution(N) { let result = 0; const M = Math.sqrt(N); let sqrtInt = Math.floor(M); while (sqrtInt > 0) { let remain = N % sqrtInt; result = remain === 0 ? result + 1 : result; sqrtInt--; }; result = Number.isInteger(M) ? result * 2 - 1 : result * 2 return result; };
1) N이 10일 때 인수 : 1, 2, 5, 10
2) N이 12일 때 인수: 1, 2, 3, 4, 6, 12
3) N이 16일 때 인수: 1, 2, 4, 8, 16
1)~ 3) 까지의 케이스를 통해, N의 제곱근 M을 구한 뒤 1 ~ M 에서 N의 인수를 모두 찾고 2를 곱하면 되는 것을 알 수 있다. (M이 정수면 곱하기 2를 해준 값에서 -1을 한다.) 시간 복잡도는 O(sqrt(N))이 나왔다.
'알고리즘, 자료구조 > Codility' 카테고리의 다른 글
[Python] Codility Lesson1 - BinaryGap (0) 2022.09.19 [Javascript] Codility Lesson6 - Triangle (0) 2022.08.15 [Javascript] Codility Lesson1 - BinaryGap (0) 2022.07.19 [Javascript] Codility Lesson9 - MaxDoubleSliceSum (0) 2022.07.11 [Javascript] Codility Lesson9 - MaxSliceSum (0) 2022.06.22