코딩 테스트 풀이 🛠

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

엄성준 2023. 2. 6. 21:48

문제 설명

 

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

 

제한사항
  • 1 ≤ n ≤ 100

 

입출력 예
 
n result
10 5
15 8

입출력 예 #1

  • 10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.

 

입출력 예 #1

  • 15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15 로 8개입니다. 따라서 8을 return합니다.

 

나의 풀이

 

1
2
3
4
5
6
7
8
9
10
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;
}
cs

 

문제를 풀며 느낀 점

 

- 먼저 Set을 통해서 {...}의 중복을 제거했습니다. 그 이유는 이중 for문을 돌면서 1부터 n까지의 수를 2부터 n-1까지의 수를 통해서 나머지 값을 구하는데 그때의 값이 0이면 Set 객체에 추가가 되는데 이때 6 같은 경우는 1과 자기 자신을 제외한 수로 나누더라도 2, 3으로 나눠지기 때문에 일반 배열로 하면 중복이 발생할 수 있어서 Set 객체에 담아줬고 arr.size를 return 했습니다.