약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.(1 ≤ n ≤ 100)
생각한 풀이
1. for문을 돌면서 n이하의 수들이 갖는 약수 카운트
2. 카운트가 3이상이면 answer 1씩 증가
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
int cnt=0;
for(int j=1;j<=i;j++){
if(i%j==0){
cnt++;
}
}
if(cnt>=3){
answer++;
}
}
return answer;
}
}
🐴 풀이
1. 첫 번째 for문으로 주어진 1부터 n 까지 돈다
2. 두 번째 for문에서는 해당 수의 약수가 몇개인지 카운트한다
3. 해당 수(i)가 j로 나누었을때 0인 수 즉, 약수이면 cnt를 증가 시키고 해당 for문이 끝났을때 cnt 값을 확인해 answer를 증가시킨다