꾸준하게
[JS코테] 월간 코드 챌린지 시즌2 - 약수의 개수와 덧셈 본문
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/77884
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[나의 풀이]
function solution(left, right) {
let answer = 0;
let add = [];
for(i=left;i<=right;i++){
for(a=1;a<=i;a++){
i%a ? '' : add.push(a);
}
answer += add.length%2 ? (-i) : i;
add = [];
}
return answer;
}
[푸는 과정]
function solution(left, right) {
//최종적으로 숫자를 더할 answer 선언
let answer = 0;
//빈 배열 add 선언
let add = [];
//left부터 right까지의 수 반복
for(i=left;i<=right;i++){
//1부터 그 수까지 반복
for(a=1;a<=i;a++){
//그 수에서 나누었을 때 나누어 떨어지는 수, 즉 약수만을 빈 배열 add에 더함
i%a ? '' : add.push(a);
}
//배열 add의 길이가 홀수이면 그 수를 빼고 짝수이면 더함
answer += add.length%2 ? (-i) : i;
//배열 add 다시 비우고 이 과정 반복
add = [];
}
return answer;
}
[다른 풀이]
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()
제곱근 구하기
Number.isInteger()
그 수가 정수인지 아닌지
728x90
반응형
'JS코딩테스트' 카테고리의 다른 글
[JS코테] 문자열 다루기 기본 (0) | 2023.04.28 |
---|---|
[JS코테] 위클리 챌린지 - 부족한 금액 계산하기 (0) | 2023.04.27 |
[JS코테] 문자열 내림차순으로 배치하기 (0) | 2023.04.25 |
[JS코테] 월간 코드 챌린지 시즌1 (0) | 2023.04.24 |
[JS코테] 수박수박수박수박수박수? (0) | 2023.04.23 |