알고리즘문제

프로그래머스 > 소수 만들기(javascript)

단점이없어지고싶은개발자 2022. 10. 4. 22:20
반응형

  1. nums 배열에 있는 숫자 중 3가지를 조합한 값이 소수가 되는 경우의 개수를 모아서 최종 return해야 한다.
  2. 소수인지 판별하는 함수를 만들고, 삼중 for문을 통해 모든 자릿수들의 조합을 구해줬다. 
  3. 하지만 시간복잡도는 O³.. 만약 숫자의 개숫가 50개 이상이였다면, 오버플로가 발생했을거다.
function solution(nums) {
    let count = 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++) {
                if (isPrime(nums[i] + nums[j] + nums[k])) count++;
            }
        }
    }
    
    return count;
    
    function isPrime(num) {
        if (num === 2) return true;
        
        for (let i = 2; i < num; i++) {
            if (num % i === 0) return false;
        }
        
        return true;
    }
}
반응형