λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“– Problem Solution/Programmers

[Swift] 2022 KAKAO BLIND RECRUITMENT kμ§„μˆ˜μ—μ„œ μ†Œμˆ˜ 개수 κ΅¬ν•˜κΈ°

by Fomagran πŸ’» 2022. 1. 19.
728x90
λ°˜μ‘ν˜•

 

Problem

 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - kμ§„μˆ˜μ—μ„œ μ†Œμˆ˜ 개수 κ΅¬ν•˜κΈ°

문제 μ„€λͺ… μ–‘μ˜ μ •μˆ˜ n이 μ£Όμ–΄μ§‘λ‹ˆλ‹€. 이 숫자λ₯Ό kμ§„μˆ˜λ‘œ 바꿨을 λ•Œ, λ³€ν™˜λœ 수 μ•ˆμ— μ•„λž˜ 쑰건에 λ§žλŠ” μ†Œμˆ˜(Prime number)κ°€ λͺ‡ κ°œμΈμ§€ μ•Œμ•„λ³΄λ € ν•©λ‹ˆλ‹€. 0P0처럼 μ†Œμˆ˜ μ–‘μͺ½μ— 0이 μžˆλŠ” 경우 P0처럼 μ†Œ

programmers.co.kr


Solution

 

1. n을 kμ§„μˆ˜λ‘œ λ°”κΎΌλ‹€.

 

 let change = String(n,radix: k)

 

2. λ°”κΎΌ 문자λ₯Ό 0을 κΈ°μ€€μœΌλ‘œ λ‚˜λˆˆλ‹€.

 

    let numbers = change.split(separator: "0")

 

3. μ†Œμˆ˜μΈμ§€ νŒλ³„ν•œλ‹€.

 

func isPrimeNumber(_ n:Int) -> Bool {
    if n == 1  { return false }
    if n == 2 || n == 3 {return true}
    let sq = Int(sqrt(Double(n)))
    for i in 2...sq {
        if n%i == 0 {
            return false
        }
    }
    return true
}

 

4. μ†Œμˆ˜μΈ 숫자의 갯수λ₯Ό λ°˜ν™˜ν•œλ‹€.

 

return numbers.filter{isPrimeNumber(Int($0)!)}.count

Source Code

 

728x90
λ°˜μ‘ν˜•

λŒ“κΈ€