728x90
반응형
(1) 내 코드
function solution(left, right) {
let answer = 0;
let cnt = 0;
for (let i = left; i <= right; i++) {
cnt = 0;
for (let x = 0; x <= i; x++) {
if (i % x === 0) {
cnt++;
}
}
if (cnt % 2 === 0 ? (answer += i) : (answer -= i));
}
return answer;
}
▶ input : 13,17 / output : 43
▶ 13부터 17사이의 약수의 개수 구하기 + 약수의 개수가 짝수면 더하기 & 홀수면 빼기
1) 약수 구하기 : 13 % n ===0 약수 (n은 1~13사이의 모든 수)
2) 13부터 17사이의 숫자: 1차 반복 => 그 안에서 약수 구하기 = 중첩 반복문 사용
3) 약수가 있을때마다 cnt++ : 개수 찾기
4) 13숫자 cnt 돌고나서 14 숫자의 약수 찾을때 cnt =0으로 초기화
5) cnt의 개수가 짝수이면 더하고 홀수이면 빼기
(2) 다른 사람 풀이
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;
}
▶ 제곱근 사용 : Math.sqrt(숫자) => 제곱근이 정수 (isInterger) = 약수의 개수 : 홀수
[예시]
Number.isInteger(Math.sqrt(13)) = false
Math.sqrt(13) = 3.605551275463989
Number.isInteger(Math.sqrt(16)) = true
Math.sqrt(13) = 4
=> 약수의 개수가 홀수
[Math.sqrt()] : 주어진 숫자에 루트(√ )를 씌웁니다
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN
[Number.isInteger()] : 주어진 값이 정수인지 판별
Number.isInteger(value); --> true/false 반환
끝.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스 | JavaScript] 부족한 금액 계산하기 (1) | 2023.11.23 |
---|---|
[프로그래머스 | JavaScript] 문자열 내림차순으로 배치하기 (2) | 2023.11.20 |
[프로그래머스 | JavaScript] 내적 (0) | 2023.11.18 |
[프로그래머스 | JavaScript] 수박수박수박수박수박수? (1) | 2023.11.18 |
[프로그래머스 | JavaScript] 가운데 글자 가져오기 (1) | 2023.11.18 |