Q. 약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
ex) 입출력 예시
| n | result |
| 10 | 5 |
| 15 | 8 |
Thinking Process
일단 2와 3은 약수가 2개뿐이니 제외하고 4부터 n까지 반복하면서 약수가 3개 이상이라면 빈 배열에 담는 로직을 짜고 최종적으로는 그 배열의 길이를 리턴하면 되겠다 !
Code
function solution(n) {
let a = [];
let b = []
for(let i=1; i<=n; i++) {
for(let j=1; j<=i; j++) {
if(i%j === 0) a.push(j)
}
if(a.length >= 3) b.push(i)
a=[]
}
return b.length
}
한 가지 아차차 싶었던 것은 a를 다시 빈 배열로 초기화 해주는 것이다.
초기화를 해주지 않으면 a의 길이가 점점 증가하여 약수의 갯수가 3개 이상이 아니더라도 b 배열에 들어가게 되기 때문이다
'Algorithm Solution > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] Lv.0_A로 B 만들기 (0) | 2023.01.30 |
|---|---|
| [프로그래머스] Lv0. 중복된 문자 제거 (1) | 2023.01.30 |
| [프로그래머스] 가장 큰 수 찾기 (0) | 2023.01.26 |
| [프로그래머스] 진료 순서 정하기 (1) | 2023.01.25 |
| [프로그래머스] 외계행성의 나이 (0) | 2023.01.25 |
