반응형
문제:
두 정수 left와 right가 매개변수로 주어집니다.
left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/77884?language=javascript
풀이보기
더보기
function solution(left, right) {
let result = [];
for (let i = left; i <= right; i++) {
let count = 0;
for (let j = 1; j <= Math.sqrt(i); j++) {
if (i % j === 0) {
count++;
if (j !== i / j) {
count++;
}
}
}
count % 2 === 0 ? result.push(i) : result.push(-i);
}
let sum = result.reduce((acc, curr) => acc + curr, 0);
return sum;
}
일단 먼저 약수를 구해줬다. for 문을 약수의 개수를 구하고, 개수 별로 result에 해당 값을 push 해줬다.
짝수일 때는 그냥 push 해주면 되고, 홀수일 때는 -를 붙여서 push하면 된다.
이제 result 값에 reduce를 활용해서 값을 다 더해주면 끝!
반응형
'코딩 테스트' 카테고리의 다른 글
[프로그래머스 Level 2] 최댓값과 최솟값 (0) | 2025.03.20 |
---|---|
[프로그래머스 Level 1] 두 정수 사이의 합 (0) | 2025.03.20 |
[프로그래머스 Level 1] 달리기 경주 (0) | 2025.03.16 |
[프로그래머스 Level 1] K번째 수 (0) | 2025.03.14 |
[프로그래머스 Level 1] 정수 제곱근 판별 (0) | 2025.03.11 |