알고리즘 CODEKATA 58 (모의고사)

오리너구리·2024년 7월 16일
0

CODEKATA

목록 보기
57/57
post-thumbnail

문제 설명

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

내 풀이

import kotlin.math.*

class Solution {
    fun solution(nums: IntArray): Int {
        var answer = 0
        
        for(i in 0 until nums.size-2){
            for(j in i+1 until nums.size-1){
                for(k in j+1 until nums.size){
                    var isPrime = true
                    val newNum = nums[i]+nums[j]+nums[k]
                    val sqrt = Math.sqrt(newNum.toDouble()).toInt()
                    for(l in 2 .. sqrt){
                        if(newNum % l == 0){
                            isPrime = false
                            break 
                        }
                    }
                    if(isPrime){
                        answer += 1
                    }
                    
                }    
                    
                }
            }
        return answer
        }

        
    }

하 .. 수학이 싫당..

처음에 안풀려서 보니까 또 문제 제대로안읽어서..

인덱스 시작 다 0부터 시작하면 안되는데,, 다 0부터 시작해서 중복되고있었음..

근데 그러고도 안돼서 뭐지 했는데 나머지연산자 써야될 곳에 나누기 연산자 써서 그랬음..

걍 정신 못차림

profile
오리너구리입니다

0개의 댓글