소수 만들기

peter.p·2022년 1월 13일

알고리즘

목록 보기
6/10

완성본

우선 총 경우의 수를 어떻게 구할 수 있을지를 먼저 생각해보았다.
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
}
profile
꼭 웹 퍼플리셔가 될거에요

0개의 댓글