내 맘대로 공부
article thumbnail

Q. 약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

 

ex) 입출력 예시

n result
10 5
15 8

Thinking Process

일단 2와 3은 약수가 2개뿐이니 제외하고 4부터 n까지 반복하면서 약수가 3개 이상이라면 빈 배열에 담는 로직을 짜고 최종적으로는 그 배열의 길이를 리턴하면 되겠다 !

 

 

Code 

function solution(n) {
    let a = [];
    let b = []
    
    for(let i=1; i<=n; i++) {
        for(let j=1; j<=i; j++) {
            if(i%j === 0) a.push(j)
        }
        
        if(a.length >= 3)  b.push(i)
        
        a=[]
    }
    
    return b.length
}

한 가지 아차차 싶었던 것은 a를 다시 빈 배열로 초기화 해주는 것이다.

초기화를 해주지 않으면 a의 길이가 점점 증가하여 약수의 갯수가 3개 이상이 아니더라도 b 배열에 들어가게 되기 때문이다

profile

내 맘대로 공부

@곰도리도리잼

잘못된 정보가 있다면 알려주세요 🧸