[Level 2] 소수 만들기 + Swift

sanghee·2021년 9월 7일
0

🙈코딩테스트

목록 보기
25/52
post-thumbnail

[Level 2] 소수 만들기

https://programmers.co.kr/learn/courses/30/lessons/12977

풀이

isPrime함수는 소수인지 판별하는 함수이다. 소수일 경우에 true를 반환한다.

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

combi함수는 숫자 3개를 조합하여 합한 값이 소수일 경우, result를 1 더한다. now에는 조합한 숫자들의 합, count에는 조합 횟수가 들어간다.

func solution(_ nums:[Int]) -> Int {
    var result = 0
    
    func combi(_ index: Int, _ sum: Int, _ count: Int) {
        if count == 3 {
            if isPrime(now) { result += 1}
            return
        }
        for i in index..<nums.count {
            combi(i + 1, sum + nums[i], count + 1)
        }
    }
    
    combi(0, 0, 0)
    
    return result
}
profile
👩‍💻

0개의 댓글