[Javascript] 프로그래머스 : 약수의 개수와 덧셈
[Javascript] 프로그래머스 Level1 _ 약수의 개수와 덧셈
👇🏻
👇🏻
시행착오
( + 코드를 작성하면서든 생각들.)
1.
이번 문제는 제목이 '약수의 개수와 덧셈'이길래 개수를 하나씩 구하고 확인해야하나? 싶어서
자칫하면 복잡하게 생각할 뻔 했다. 하지만 아주 쉽게 풀리는 문제였다!
입출력의 예시를 보면
약수의 개수가 홀수인 [16]의 경우 4를 제외한 약수들이 양끝으로 짝을 (곱해서 16이되도록) 이루고 있다.
하지만 4의 경우 자신의 제곱이 16이기 때문에 본인이 짝인 것이다.
이렇게 약수 중에 하나가 n의 정수 제곱근인지를 확인하면 쉽게 풀 수 있던 문제였다!
처음에는 단순히 정수로 만든 제곱근을 곱했을 때 일치해야한다 라고만 생각해서
제곱근을 정수로 만들어 다시 제곱을 했을 때 i와 일치하는 지를 확인했다.
사실 이러면 단순할 것도 조금 복잡해지는 것 같아서 간단하게 수정했다.
function solution(left, right) {
var sum = 0;
for(let i=left; i<= right; i++){
var divisor = Math.floor(Math.sqrt(i));
(Math.pow(divisor, 2) === i)? sum-=i : sum+=i;
}
return sum;
}
2.
굳이 정수로 만들어 주지않아도 제곱근이 정수라면 약수의 개수가 홀수라고 판단했다.
Number.isInteger()를 이용해서 제곱근이 정수인지 판별하고 바로 연산을 진행했다!
function solution(left, right) {
var sum = 0;
for(let i=left; i<= right; i++){
(Number.isInteger(Math.sqrt(i)))? sum-=i : sum+=i;
}
return sum;
}
+)
매일 코딩 테스트를 푼지 2주가 다 되어간다 ....!
처음에는 문제만 봐도 당황해서 시작조차 못할 것 같았는데
벌써 1단계에서 푼 문제가 안 푼 문제보다 많아졌다ㅎㅎㅎ😛😛
완벽하지는 못하더라도 하나씩 찾아보면서 알아나간다고 생각하니까 그래도 뿌듯하다.
(점점 어려워지겠지만,,, 화이티잉,,,,)
⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도입니다. 참고해주시고 편안하게 봐주세요 :) ⚠️
*** 혹시라도 잘못된 정보가 있다면 언제든지 알려주시면 감사하겠습니다 ! ***