HIT해
[Swift/프로그래머스] k진수에서 소수 개수 구하기 ( 문자열, 소수 판별 ) 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/92335
진법변환과 제곱근 함수 사용방법이 기억나지 않아 헷갈렸다.
진법 변환
Int( origin, radix : n ) // origin 을 n진법으로 변경
소수 판별
func isPrime(num : Int) -> Bool {
if num < 2 {
return false
}
for i in 2...Int(sqrt(Double(num)))+1{
if num % i == 0 {
return false
}
}
return true
}
더 효율적인 소수판별이다.
func isPrime(num: Int) -> Bool {
if num == 2 {
return true
}
if num < 2 {
return false
}
if num % 2 == 0 {
return false
}
for i in stride(from:3 , through: Int(sqrt(Double(num))), by: 3){
if num % i == 0 {
return false
}
}
return true
}
풀이
import Foundation
func solution(_ n:Int, _ k:Int) -> Int {
let nums = String(n,radix:k).split(separator:"0").map { Int($0)! }
let filter = nums.filter{ $0 != 1 }
var result = 0
for i in filter {
if i == 2 {
result += 1
continue
}
var prime = true
for j in 2...Int(sqrt(Double(i))) + 1{
if i % j == 0 {
prime = false
break
}
}
if prime {
result += 1
}
}
print(filter)
return result
}
'Swift > Swift 알고리즘' 카테고리의 다른 글
[Swift/프로그래머스] 타겟 넘버 ( BFS , 연산 ) (0) | 2024.11.01 |
---|---|
[Swift/프로그래머스] 마법의 엘리베이터 ( 그리디 , 연산 ) (0) | 2024.11.01 |
[Swift/프로그래머스] 택배 배달과 수거하기 ( 그리디 ) (0) | 2024.11.01 |
[Swift/프로그래머스] 미로 탈출 ( 그리디 , BFS ) (0) | 2024.11.01 |
[Swift/프로그래머스] 숫자 변환하기 ( 그리디 ) (0) | 2024.11.01 |