TIL #21

loci·2024년 5월 21일
0

TIL

목록 보기
20/111
post-thumbnail


소수 만들기

3개씩 더하는 모든 경우를 구해 소수인지 판별해야한다.


나의 코드

class Solution {
    fun solution(nums: IntArray): Int {
        var answer = 0
        for(i in 0 until nums.size){
            for(j in i+1 until nums.size){
                for(k in j+1 until nums.size){
                    if(prime(nums[i]+nums[j]+nums[k])){
                        answer++
                    }
                }
            }
        }
        
        return answer
    }
    fun prime (p : Int): Boolean {
        for(l in 2 until p ){
                if(p % l == 0 ){
                   return false 
                }        
        }
        return true
    }
}

-> 이렇게 소수구하는 부분을 바꿔주면 속도를 더 빠르게 할 수 있다.

class Solution {
    fun solution(nums: IntArray): Int {
        var answer = 0
        for(i in 0 until nums.size){
            for(j in i+1 until nums.size){
                for(k in j+1 until nums.size){
                    if(prime(nums[i]+nums[j]+nums[k])){
                        answer++
                    }
                }
            }
        }
        
        return answer
    }
    fun prime (p : Int): Boolean {
        if (p <= 1) return false  // 1 이하의 숫자는 소수가 아님
    	if (p == 2) return true   // 2는 소수
    	if (p % 2 == 0) return false  // 2 이외의 짝수는 소수가 아님
        for(l in 3..Math.sqrt(p.toDouble()).toInt() step 2 ){
                if(p % l == 0 ){
                   return false 
                }        
        }
        return true
    }
}
profile
편리한 개발자

0개의 댓글