요구능력 : 소수판별
코드설명 :
처음에 에라토스테네스의 체를 100만으로 설정하고 풀었는데,
두 개의 테스트케이스에서 coreDumped가 나왔다.
인덱스 문제인것같아서 n = 1000000으로 설정하고 k = 6으로 설정해봤는데,
에라토스테네스의 체에 들어간 수가 100만 보다 큰 수가 나와버려서 coreDumped된것이었다.
그래서 4천만으로 설정하고 해봤는데 당연히 시간초과 ^^
에라토스테네스가 더 빠른건줄알고 100만으로 두고 그보다 큰수가 나오면 아래에 isPrime함수를 사용했는데,
이렇게 사용한 시간보다 isPrime만 사용한 시간이 더 짧았다.
사실 이 문제에서 소수를 판별해봤자 몇개나 판별하겠나..
이 문제를 통해서 에라토스테네스의 체를 소수구한다고 아무때나 사용하는게 아니라는것을 알았다
후기 : 괜히 가까운길 냅두고 돌아간느낌..
func solution(_ n:Int, _ k:Int) -> Int {
func isPrime(_ num: Int) -> Bool{
for j in stride(from: 2, through: Int(sqrt(Double(num))), by: 1){
if num % j == 0 {
return false
}
}
return true
}
//k진수로 변경
let jinsu = String(n, radix: k)
let arr = Array(jinsu)
var resultArr = [Character]()
for i in arr{
if i != "0"{
resultArr.append(i)
}else{
resultArr.append(" ")
}
}
let resultArrString = String(resultArr)
let a = resultArrString.split(separator: " ").map{Int(String($0))!}
var count = 0
for i in a{
if i != 1{
if isPrime(i){
count += 1
}
}
}
return count
}
'Algorithm > 문제풀이_프로그래머스' 카테고리의 다른 글
[Swift][프로그래머스][DFS] 타겟 넘버 (0) | 2022.03.14 |
---|---|
[Swift][백트래킹][LV_3] 양과 늑대 (0) | 2022.02.26 |
[Swift][누적합][LV_3] 파괴되지 않은 건물 (0) | 2022.02.24 |
[Swift][프로그래머스][LV_2] 위장 (0) | 2022.02.22 |
[Swift][프로그래머스][LV_2] 양궁대회 (0) | 2022.02.22 |
댓글