-
문제
https://programmers.co.kr/learn/courses/30/lessons/77884
How to Solve ?
[1] 약수 구해서 풀기
이렇게 풀었더니 테스트케이스 하나가 걸려서, 어떻게 하면 이를 해결 할 수 있을까? 라는 궁금증을 가지게 되었다.
function divisor(integer) { let count = 0; for (let i = 2; i < integer; i++) { if (integer % i === 0) { count++; } } return count; } function solution(left, right) { let answer = 0; for (let i = left; i <= right; i++) { let checked = divisor(i); checked % 2 === 0 ? (answer += i) : (answer -= i); } return answer; } let left = 13; let right = 17; console.log(solution(left, right));
[2] 약수의 성질 이용
" 자연수가 제곱수일 때, 그 값의 약수는 홀수개고, 제곱수가 아니라면 약수는 짝수개이다. "
라는 사실을 통해 문제를 해결 할 수 있었다.
function solution(left, right) { let answer = 0; for (let i = left; i <= right; i++) { if (Math.sqrt(i) % 1 === 0) { answer -= i; } else { answer += i; } } return answer; } let left = 13; let right = 17; console.log(solution(left, right));
'PS > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스_Lv3 ] 베스트앨범 ( by using JavaScript ) (0) 2021.05.25 [프로그래머스_Lv 3] 네트워크 ( by using JavaScript ) (0) 2021.05.23 [프로그래머스_Lv2 ] 메뉴 리뉴얼 ( by using JavaScript ) (0) 2021.05.23 [프로그래머스_Lv2] 예상 대진표 ( by using JavaScript ) (0) 2021.05.21 [프로그래머스_Lv2] 실패율 ( by using JavaScript ) (0) 2021.05.21 댓글