MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์†Œ์ˆ˜ ์ฐพ๊ธฐ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์†Œ์ˆ˜ ์ฐพ๊ธฐ

MUKER 2023. 4. 24. 23:13
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


์„ฑ๊ณต ํ’€์ด

import Foundation

func solution(_ numbers:String) -> Int {
    let arr = numbers.map { String($0) }
    var used = Array(repeating: false, count: arr.count)
    var numArr = Set<Int>()
    
    func backtrack(_ n: String, _ length: Int) {
        if n.count == length {
            numArr.insert(Int(n)!)
            return
        }
        for i in 0..<arr.count {
            if !used[i] {
                used[i] = true
                backtrack(n+arr[i], length)
                used[i] = false
            }
        }
    }
    
    for i in 1...numbers.count {
        backtrack("", i)
    }
    
    func isPrimeNumber(x: Int) -> Bool {
        if x < 4 { return x == 1 || x == 0 ? false : true }
        for i in 2...Int(sqrt(Double(x))) {
            if (x % i == 0) { return false }
        }
        return true
    }
    return numArr.filter { isPrimeNumber(x: $0) }.count
}

ํ’€์ด ํ‚ค์›Œ๋“œ

๋ฐฑํŠธ๋ž˜ํ‚น
์†Œ์ˆ˜์ฐพ๊ธฐ