상세 컨텐츠

본문 제목

[프로그래머스] k진수에서 소수 개수 구하기

Algorithm

by 쑤야. 2023. 12. 22. 13:43

본문

https://school.programmers.co.kr/learn/courses/30/lessons/92335?language=swift#

 

접근


  • 0이 포함되지 않아야 하므로, 0을 기준으로 문자열을 분리한다. 

 

로직


  • n을 k진법으로 변환한다.
  • 0을 기준으로 문자열을 자른다.
  • 케이스들을 필터링한다. 
  • 2부터 타켓 값의 제곱근까지, 타켓이 나눠지는 지 점검한다. 나눠지는 경우 소수가 아니다.
    • 시간초과를 방지하기 위해 반드시 제곱근을 루프의 끝으로 지정해야 한다. 

 

풀이


func solution(_ n:Int, _ k:Int) -> Int {
    
    let radix = String(n, radix: k).split(separator: "0").map{ Int($0)! }

    func isPrime(_ value: Int) -> Bool {
        
        if value == 1 { return false }
        
        for i in stride(from: 2, to: Int(sqrt(Double(value))) + 1, by: +1) {
            if value % i == 0 {
                return false
            }
        }
        
        return true
    }
    
    return radix.filter{ isPrime($0) }.count
}

'Algorithm' 카테고리의 다른 글

[프로그래머스] 압축  (0) 2023.12.26
[프로그래머스] 네트워크  (1) 2023.12.25
[프로그래머스] 타겟 넘버  (0) 2023.12.21
[프로그래머스] 뉴스 클러스터링  (0) 2023.12.21
[프로그래머스] 피로도  (0) 2023.12.20

관련글 더보기