-
문제
https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
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