[프로그래머스] 약수의 합 | JavaScript

Hemudi | Hemdi·2021년 11월 13일
0

🧨 코딩테스트

목록 보기
9/19
post-thumbnail

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.


✳️ 제한사항

  • n은 0 이상 3000이하인 정수입니다.

✳️ 입출력 예

nreturn
1228
56

✳️ 내가 푼 코드

function solution(n) {
    var answer = 0;

    for(let num = 1; num*num <= n; num++){
        if(n % num === 0){
            answer += (n / num === num) ? num : (n / num) + num;
        }
    }
    
    return answer;
}

✳️ 생각 정리

  • 최대 약수의 제곱은 원 값보다 크지 않음을 이용해서 반복문의 횟수를 줄임
  • 짝인 약수를 한꺼번에 더하기 위해서 나머지가 0인 약수를 구하면 그 약수로 원 값을 나눈 몫을 함께 더했음.
    • (n / num === num)
      • 이때 제곱이 원 값인 약수가 두번 더해지는걸 제한하기 위해 삼항 연산자를 추가함
profile
'햄디'로 현재 코드스쿼드 코코아 과정 수강 중 💻 (티스토리로 이전)

0개의 댓글

관련 채용 정보