프로그래머스 JS 약수의 개수와 덧셈

이명진·2022년 2월 7일
0

코드카타

목록 보기
10/69

약수의 개수와 덧셈

프로그래머스 레벨1 3페이지의 배열을 사용하지 문제는 거의다 푼것 같다.
차곡차곡 하나씩 문제푼것들이 채워져 나가는게 보기가 좋다

오늘은 1페이지의 약수의 개수와 덧셈 문제를 풀었다.
약수를 찾는 문제에서 조금더 발전한 문제였다.

left, right 두개의 매개변수가 주어지는데 left,right 를 포함한 사이값에서

약수의 개수가 짝수개이면 더하고 홀수개이면 빼서 결과를 도출하는 문제이다.

만약 13 이라면 약수가 1,13 두개니 짝수개라서 13을 더하고
약수가 홀수일때는 뺀 최종 결과를 도출해야 한다.

내가 푼 로직은 이렇다

function solution(left,right) {
let result = 0;
for(left;left<=right;left++){
let count = 0;
for(let i = 1;i<=left; i++){
if(left%i===0){
count += 1
}
}
if(count%2===0){
result += left
}else{
result -= left
}
}
return result
}

for문을 두번 돌려서 풀었는데 처음에는 left, right 사의의 값을 구하고
내부의 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;
}

제곱근이 정수이면 약수의 개수가 홀수인 것을 가지고 문제를 푼것 같은데
이런 생각을 하다니 참신하면서 기발하다.
대단하다. 오늘도 한가지를 배워간다.
그래도 오늘도 검색없이 문제를 풀었다는 것에 위안을 삼고 간다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글