문제(출처: 프로그래머스)
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
▶ 내가 푼 방식
function solution(n) {
let answer = 0
for(let i =0; i <=n; i ++){
let cnt = 0
for(let j =0; j<=i; j++){
if (i%j==0){
cnt +=1
}
}
if(cnt >2){
answer += 1
}
}
return answer;
}
▶ 다른 유저가 푼 방식
// 유저 1
function solution(n) {
let dp = new Array(n+1).fill(1)
for(let i = 2 ; i <= n ; i++){
if(dp[i]){
for(let j = 2 ; i*j <= n ; j++){
dp[i*j] = 0
}
}
}
return dp.filter(el => el === 0).length
}
'프로그래밍 > 코딩연습' 카테고리의 다른 글
[ JS 코딩연습 ] 컨트롤 제트 (0) | 2024.05.09 |
---|---|
[ JS 코딩연습 ] 소인수분해 (0) | 2024.05.09 |
[ JS 코딩연습 ] 2024/04/23 : 팩토리얼 (0) | 2024.04.23 |
[ JS 코딩연습 ] 2024/04/23 : 공 던지기 <다시 풀기> (0) | 2024.04.23 |
[ JS 코딩연습 ] 2024/04/23 : 2차원으로 만들기 (0) | 2024.04.23 |