[프로그래머스] 소수 찾기 Swift

승아·2021년 6월 14일
0

프로그래머스 - 소수 찾기

나의 코드

  1. 순열로 모든 경우의 수를 구해줍니다.
  2. 구한 값이 소수인지 아닌지 판별해줍니다.
  3. 소수이면 Set에 추가합니다.
  4. Set에 갯수를 return 해줍니다.
import Foundation

var result: Set<Int> = []

func solution(_ numbers:String) -> Int {
    
    let arr = Array(numbers)
    
    for i in 1...arr.count{
    	// 1. 순열로 모든 경우의 수를 구해줍니다.
        permutation(cnt: 0, list: arr, value: "", totalCnt: i)
    }
    // 4. Set에 갯수를 return 해줍니다.
    return result.count
}
// 순열
func permutation(cnt: Int, list: [String.Element], value: String, totalCnt: Int){
    if cnt == totalCnt{
    	// 2. 구한 값이 소수인지 아닌지 판별해줍니다.
        primeNum(value)
        return
    }else {
        for i in 0..<list.count{
           var removedArray = list
            let k = removedArray.remove(at: i)
            permutation(cnt: cnt + 1, list: removedArray, value: "\(value)\(k)" ,totalCnt: totalCnt)
        }
    }
}
// 소수 판별
func primeNum(_ value: String) {
    let num = Int(value)!
    var cnt = 0
    
    if num > 1{
        for i in 2...num{
            if cnt > 1{
                break
            }
            if num % i == 0 {
                cnt += 1
            }
        }
        
        if cnt == 1{
        	// 3. 소수이면 Set에 추가합니다.
            result.insert(num) // Set에 넣어주어 중복 제거
        }
    }
}

0개의 댓글