728x90
프로그래머스 1단계 : 약수의 개수와 덧셈
📝 문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
👉 제한 사항
- 1 ≤ left ≤ right ≤ 1,000
👉 입출력 예
left | right | result |
13 | 17 | 43 |
24 | 27 | 52 |
✌️ 나의 풀이
약수를 구하기 위해서는 1부터 자신의 수까지 반복문을 통해 나누면서
나머지가 0인 것을 구해서 num이라는 변수에 저장합니다. 그리고
삼항연산자를 통해 갯수가 짝수이면 answer를 더해주고 홀수이면 빼줍니다.
function solution(left, right) {
let answer = 0;
for(let i=left; i<=right; i++){
let num = 0;
for(let j=1; j<=i; j++){
if(i%j === 0){
num += 1;
}
}
answer = num%2 === 0 ? answer += i : answer -= i;
}
return answer;
}
👍 다른 풀이
2중 for문으로 안풀고 제곱근을 이용했는데요. 제곱근이 정수면 약수의
갯수가 홀수라고 합니다. 오늘도 이렇게 새로운 사실을 배우네요^^ 이런
수포자😭
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 1단계 : 예산 (1) | 2022.11.29 |
---|---|
프로그래머스 1단계 : 3진법 뒤집기 (2) | 2022.11.27 |
프로그래머스 1단계 : 부족한 금액 계산하기 (1) | 2022.11.25 |
프로그래머스 1단계 : 내적 (1) | 2022.11.24 |
프로그래머스 1단계 : 없는 숫자 더하기 (1) | 2022.11.23 |
댓글