https://school.programmers.co.kr/learn/courses/30/lessons/136798
첫번째 => 시간초과
function getDivisionsLength(n) {
return new Array(n).fill(0).map((e, index) => index+1).filter(e => n%e === 0).length;
}
function solution(number, limit, power) {
var answer = 0;
const divisions = [];
// 약수들 구하기
for (let i = 1; i <= number; i++) {
divisions.push(getDivisionsLength(i));
}
// limit 넘지않게 총 무게구하기
answer = divisions.reduce((acc, curr) => {
return acc + ((curr > limit) ? power : curr);
}, 0);
return answer;
}
- 약수 구할때 n/2초과는 확인할 필요없다
- 자기자신은 약수이므로 +1
function getDivisionsLength(n) {
let count = 0;
for (let i = 1; i <= n/2; i++) {
if (n % i === 0) {
count++;
}
}
return ++count; // 자기자신도 약수임
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 (stack) (0) | 2023.06.08 |
---|---|
[프로그래머스] 다음 큰 숫자 (0) | 2023.06.08 |
[프로그래머스/카블] 1차 다트게임 (0) | 2023.06.06 |
[프로그래머스/카카오 블라인드] 실패율 (0) | 2023.06.06 |
[프로그래머스/카카오 블라인드] 비밀지도 (0) | 2023.06.06 |