TIL #58

loci·2024년 6월 27일
0

TIL

목록 보기
57/111

k진수에서 소수 개수 구하기

주어진수 n을 k진법으로 바꿨을때 조건을 만족하는 소수를 구하며 총 소수의 개수를 리턴해야 한다.

toString을 이용해서 n을 k진법으로 바꿔준후 0을 기준으로 split해서 반환된 배열의 요소가 비어있지 않고 1이상의 소수이면 answer를 카운트 해주도록 풀었다.


나의 코드

class Solution {
    fun solution(n: Int, k: Int): Int {
        var answer: Int = 0
        var nSplit = n.toString(k).split("0")
        for(i in nSplit){
            if(i.isNotEmpty() && i.toLong() > 1 && prime(i.toLong())){
                        answer++
            }
        }
        return answer
    }
    
    fun prime(i: Long): Boolean{
        var sqrt = Math.sqrt(i.toDouble()).toLong()
        for(j in 2L..sqrt){
            if( i % j == 0L){
                return false
            }
        }
        return true
    }
}

처음 풀이에서 배열의 요소가 커질 경우 오류가 나서 Int에서 Long으로 바꿔주고 prime함수에 sqrt를 추가해주었다.


다른사람의 코드

import java.math.*
class Solution {

    fun solution(n: Int, k: Int): Int {
        var answer: Int =0
        val newN = n.toString(k).split("0")
        for(i in newN) {
            if(i == "" || i == "0" || i == "1") continue
            if(BigInteger(i).isProbablePrime(1)) answer ++
        }
        return answer
    }
}
profile
편리한 개발자

0개의 댓글