우선 총 경우의 수를 어떻게 구할 수 있을지를 먼저 생각해보았다.
for문을 돌려서 하는 게 나을 것으로 판단.
원래는 sumThree는 배열로 만들어놨었다.
하지만 3중 포문이 끝날 때 즈음에 sumThree를 배열로 놓으면 for문을 2번은 더 돌려야할 것 같다는 생각에 효율성?을 따지다보니
전체 경우의 수에서 소수가 아닌 수들을 빼주는 방식을 사용하였다.
사실 이것도 여러 번의 시행착오를 겪다가 깨닫게 되었다..
(1)sumThree를 0으로 초기화
(2)totalcountOfresult 에 전체 경우의 수 넣어주기.
(3)sumThree값이 소수가 아니면 countOfNotsosu를 카운트하고
(4)sumThree는 다시 초기화해서
(5)다음 sumThree값을 받아올 수 있게 하였다.
(6)totalcountOfresult - countOfNotsosu 를 하면 소수의 갯수 뽑아내기 끝!
function solution(nums) {
let sumThree = 0 // (1)
let totalcountOfresult = 0
let countOfNotsosu = 0
for (let i=0; i<nums.length-2; i++){
for (let j=i+1; j<nums.length-1; j++){
for (let k=j+1; k<nums.length; k++){
sumThree = nums[i]+nums[j]+nums[k]
// console.log(sumThree)
totalcountOfresult++
for(let n = 2; n < sumThree ; n++){
if(sumThree%n === 0){
countOfNotsosu++ //(2)
sumThree = 0 // (3)초기화
}
}
}
}
} return totalcountOfresult-countOfNotsosu
}