🌠 문제

μˆœμ„œμŒμ΄λž€ λ‘ κ°œμ˜ μˆ«μžλ₯Ό μˆœμ„œλ₯Ό μ •ν•˜μ—¬ μ§μ§€μ–΄ λ‚˜νƒ€λ‚Έ μŒμœΌλ‘œ (a, b)둜 ν‘œκΈ°ν•©λ‹ˆλ‹€. μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ λ‘ μˆ«μžμ˜ κ³±μ΄ n인 μžμ—°μˆ˜ μˆœμ„œμŒμ˜ κ°œμˆ˜λ₯Ό returnν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

🌠 μ œν•œμ‚¬ν•­

  • 1 ≤ n ≤ 1,000,000

🌠 μž…μΆœλ ₯ 예

n result
20 6
100 9

🌠 μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

  • n이 20 μ΄λ―€λ‘œ 곱이 20인 μˆœμ„œμŒμ€ (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) μ΄λ―€λ‘œ 6을 returnν•©λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2

  • n이 100 μ΄λ―€λ‘œ 곱이 100인 μˆœμ„œμŒμ€ (1, 100), (2, 50), (4, 25), (5, 20), (10, 10), (20, 5), (25, 4), (50, 2), (100, 1) μ΄λ―€λ‘œ 9λ₯Ό returnν•©λ‹ˆλ‹€.

🧞 풀이

function solution(n) {
    // μ •λ‹΅ λ‹΄κΈ° μœ„ν•œ λ³€μˆ˜ μ„ μ–Έ
    let answer = 0;
    
    // xλŠ” n의 제곱근의 μ •μˆ˜ λΆ€λΆ„
    const x = parseInt(Math.sqrt(n));
    
    // 1λΆ€ν„° xκΉŒμ§€ λ°˜λ³΅ν•˜λ©΄μ„œ μ•½μˆ˜μΈμ§€ 확인
    // μ•½μˆ˜μΌ 경우, 항상 쌍이 있기 λ•Œλ¬Έμ— answer에 λ”ν•˜κΈ° 2
    for (let i = 1; i <= x; i++) {
        if (n % i == 0) {
            answer += 2;
        }
    }
    
    // λ§Œμ•½ Math.sqrt(n)이 μ •μˆ˜λ©΄, ν•΄λ‹Ή κ²½μš°λŠ” Math.sqrt(n)을 μ•½μˆ˜λ‘œ κ°€μ§€λŠ” 것
    // κ·Έλ ‡κΈ° λ•Œλ¬Έμ— -1
    if ( x == Math.sqrt(n) ) {
        answer -= 1;
    }
    
    // μ •λ‹΅ λ°˜ν™˜
    return answer;
}

+ Recent posts