- 문제 설명
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
- 풀이 과정
- n이하의 수를 1,과 n 자신을 제외한 수로
나눴을 때 나머지가 0이면 합성수이다.
- 이를 확인하기 위해 중첩반복문을 활용한다.
- 이 과정에서 n 이하의 수를 확인하고 나눴을 때 중복 값이 나오고, 배열을 순회하려니 도저히 답이 나오지 않았다.
- 구글링 결과 Set을 활용하면 손쉽게 풀이할 수 있음을 알 수 있었다.
- Set 은 받은 인자를 중복없는 객체로 만들어준다.
- add를 활용하여 Set에 값을 넣어준다.
- 합성수의 개수를 구하는 문제이므로 객체의 size를 구하면 된다.
function solution(n) {
let answer = new Set();
for (let i = 1; i <= n; i++) {
for(let j = 2; j < i; j++) {
if ( i%j === 0) {
answer.add(i);
}
}
}
return answer.size;
}