문제 링크
- 합성수 : 약수의 개수가 세 개 이상인 수
- 자연수 n 이하의 합성수의 개수 return
function solution(n) {
const result = []
for(let i = 4; i<=n; i+=2){
result.push(i)
}
for(let i = 9; i<=n; i+=3){
result.push(i)
}
return [...new Set(result)].length
}
- 처음 작성한 코드.
- 입출력 예) 로 나온 예시가 2와 3의 배수로 되어있어 해당 코드로 작성.
- 코드 실행은 무사히 통과했으나 제출 후 채점에서 1번과 5번 케이스에 오류 발생.
- 예를 들어 49 의 경우 2와 3의 배수는 아니지만 7의 배수이기 때문에 해당 함수로 잡아낼 수 없음.
function solution(n) {
let count = 0;
for (let i = 4; i <= n; i++) {
for (let j = 2; j * j <= i; j++) {
if (i % j === 0) {
count++;
break;
}
}
}
return count;
}
다른 사람의 풀이
function solution(n) {
let base = Array.from(Array(n), (v,i) => i+1)
for(let i = 2; i <= parseInt(Math.sqrt(n)); i++) {
base = base.filter(el => el%i != 0 || el <= i)
}
return n - base.length
}