ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€-Swift

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - kμ§„μˆ˜μ—μ„œ μ†Œμˆ˜ 개수 κ΅¬ν•˜κΈ°

CheonD 2022. 10. 18. 00:46

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - kμ§„μˆ˜μ—μ„œ μ†Œμˆ˜ κ°œμˆ˜ κ΅¬ν•˜κΈ°

 

 

 λ¬Έμ œ μ„€λͺ…

 

https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

 

 

 

 λ‚˜μ˜ 풀이

 

μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체λ₯Ό μ΄μš©ν•΄λ³΄κ³ , κ·Έλƒ₯ μ£Όμ–΄μ§„ 수만큼만 μ†Œμˆ˜μ˜ 개수λ₯Ό 찾아도 λ³΄μ•˜μ§€λ§Œ μ‹œκ°„μ΄ˆκ³Όκ°€ 났닀.

생각해보면 1,000,000μ •λ„μ˜ μˆ˜κ°€ 3μ§„μˆ˜λ‘œ λ³€ν™˜λ˜μ—ˆμ„ λ•Œ ν¬κΈ°λŠ” μƒλ‹Ήνžˆ 크기 λ•Œλ¬Έμ— 이λ₯Ό μ „λΆ€ νƒμƒ‰ν•˜λ©΄μ„œ μ†Œμˆ˜λ₯Ό κ΅¬ν•˜λŠ” 것은 λ‹€μ†Œ 무리가 μžˆμ„ 수 μžˆλ‹€.

 

νŠΉμ • μˆ˜κ°€ μ†Œμˆ˜μΈμ§€ μ•„λ‹Œμ§€λ₯Ό 탐색할 λ•ŒλŠ” μ œκ³±κ·ΌκΉŒμ§€λ§Œ νƒμƒ‰ν•˜λ©΄ μ•Œ 수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄ 12λΌλŠ” 수의 μ•½μˆ˜λ₯Ό μ‚΄νŽ΄λ³΄λ©΄ 1, 2, 3, 4, 6, 12κ°€ μžˆλŠ”λ° 12의 제곱근인 Int(3.xx)에  1을 더해 4κΉŒμ§€λ§Œ 돌면 μ†Œμˆ˜μΈμ§€ μ•„λ‹Œμ§€ 확인할 수 μžˆλ‹€.(2λŠ” 6κ³Ό, 3은 4와 짝지어지기 λ•Œλ¬Έ) 

 

import Foundation

func isPrime(_ num: Int) -> Bool {
    if num <= 1 { return false }
    for i in 2..<Int(sqrt(Double(num)))+1 {
        if num % i == 0 {
            return false
        }
    }
    return true
}

func solution(_ n:Int, _ k:Int) -> Int {
    
    let changeKnum = String(n, radix: k)
    let numArr = changeKnum.split(separator: "0")
    var cnt = 0
    for x in numArr {
        if isPrime(Int(x)!) {
            cnt += 1
        }
    }
    
    return cnt
}