728x90
🔥 Programmers Lv.1 : 약수의 개수와 덧셈
🔍 문제 : " 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. "
📎 조건 :
∙ 1 ≤ left ≤ right ≤ 1,000
∙ 1 ≤ left ≤ right ≤ 1,000
👉🏻 My answer
function solution(left, right) {
let count = 0;
for(let i = left; i<=right; i++) {
let arr = [];
for(let j = 0; j <= i; j++) {
if(i % j == 0) arr.push(j)
}
arr.length % 2 === 0 ? count += i : count -= i
}
return count
}
: count 는 약수를 가지고 있는 수들의 합 혹은 차를 구해준 값입니다.
: arr.length % 2 === 0 ? count += i : count -= i 식은 약수의 길이가 홀수일 때 짝수일 때에 따라 더해줄 것인지 빼줄 것인지를 결정짓는 식입니다.
: arr.length % 2 === 0 ? count += i : count -= i 식은 약수의 길이가 홀수일 때 짝수일 때에 따라 더해줄 것인지 빼줄 것인지를 결정짓는 식입니다.
👉🏻 Another ways
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;
}
: 제곱근이 정수면 약수의 개수가 홀수다. 를 이용한 식이라는데 천재아닌감
'알고리즘 도장깨기' 카테고리의 다른 글
프로그래머스 Lv.1 "음양 더하기" (2) | 2022.11.28 |
---|---|
프로그래머스 Lv.1 "직사각형 별찍기" (1) | 2022.11.25 |
프로그래머스 Lv.1 "이상한 문자 만들기" (1) | 2022.11.23 |
프로그래머스 Lv.1 "두 정수 사이의 합" (2) | 2022.11.21 |
프로그래머스 Lv.1 "콜라츠 추측" (2) | 2022.11.21 |
댓글