합성수 찾기 [CT]

성배·2025년 1월 14일
0

코딩테스트

목록 보기
20/53

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 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를 증가시킨다

0개의 댓글