소수 만들기
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
}
}