코딩테스트 연습/프로그래머스 LV.0

[프로그래머스] Lv.0 합성수 찾기 - 자바(Java)

5ein 2024. 4. 3. 22:18

문제: 코딩테스트 연습 - 합성수 찾기 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 100

입출력 예

n result
10 5
15 8

나의 문제 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 1; i <= n; i++) {
            int count = 0;
            for (int j = 1; j <= i; j++) {
                count += (i % j == 0) ? 1 : 0;
            }
            answer += (count >= 3) ? 1 : 0;
        }
        return answer;
    }
}

다른 사람의 문제풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i=4; i<n+1; i++){
            if(i%2==0) {
                answer++; // 4이상 짝수는 전부 합성수
                continue;
            }
            else{
                for(int k=3; k<i/2; k=k+2){
                    if(i%k==0){
                        answer++;
                        break;
                    }
                }
            }
        }
        return answer;
    }
}

문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)