Javascript

[javascript] 프로그래머스 - 합성수 찾기

jojv 2023. 6. 19. 11:48
728x90
반응형

📕문제 설명

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

 

📗제한사항

  • 1  n ≤ 100

 

📘입출력 예와 설명

n result 설명
10 5 10이하 합성수는 4,6,6,9,10 로 5개입니다. 따라서 5를 return합니다.
15 8 15이하 합성수는 4,6,8,9,10,12,14,15 로 8개입니다. 따라서 8을 return합니다.

 

📙풀이

function solution(n) {
    var answer = 0;
    for(let i = 1; i<=n;i++){
        let cnt = 0;
        for(let j = 1; j<=i;j++ ){
            if(i % j === 0) cnt+=1
        }
        if(cnt >2){
            answer+=1
        }
    }
    return answer;
}

 

 

for문이 새로 반복될 때마다 cnt를 0으로 초기화해주기 위해 cnt를 0으로 선언하고,

i%j === 0은 나머지가 없이 나누어지는 i의 약수이기 때문에, cnt의 값을 증가시킵니다.

cnt가 3이상이라는 것은 약수의 개수가 세 개 이상인 수를 합성수를 의미하기 때문에

answer의 값을 증가시킵니다.

 

📙다른 사람의 풀이

function solution(n) {
    let arr = new Set();
    for(let i = 1; i <= n; i++){
        for(let j = 2; j < i; j++){
            if(i % j === 0)
                arr.add(i);
        }
    }
    return arr.size;
}

다른 사람의 풀이를 보다가 Set객체를 이용하여 해결하신 분이 있기에

보다 깔끔하고 명확한 듯하여 가져와봤습니다.

 

글 읽어 주셔서 감사합니다.

부족한 부분이 있다면 댓글로 알려주시면 감사히 배우겠습니다:)

728x90