프로그래머스 소수만들기

박재훈·2023년 2월 10일
0

알고리즘

목록 보기
6/13

내가 푼 방법 : 배열의 원소를 차례로 3개씩 for문을 사용해서 담고, 세 원소의 합을 reduce로구하고, 그 합이 소수인지 계산해서 맞을때마다 카운트를 셌다.

function solution(nums) {
    var answer = 0;
    let tmp = 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++) {
                let Arr = [];
                Arr.push(nums[i]+nums[j]+nums[k])
                tmp = Arr.reduce((a,b) => a + b, 0);
                let count = 0;
                for(var l=1;l<=tmp;l++){
                    if(tmp%l==0) count++;
                }
                if(count==2) answer++;
                
            }
        }
    }
    
    return answer;
}

어려웠던 점은 소수일때만 카운트를 세고싶었는데, 어떻게 해야할지를 몰랐다. 그래서 그냥 새로운 변수를 하나 만들어서 2이상의 나누어떨어지는 숫자가 생긴다면 (count==1) answer++ 하는 방식이었다.

이번 문제는 for문을 너무 여러번 써서 마치 시험칠때 같은 번호를 여러번 마킹하는 기분이 들었다.

profile
신입 개발자

0개의 댓글