[프로그래머스] 합성수 찾기 (Java)

2022. 12. 19. 17:08프로그래머스

반응형
문제 설명

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

 

제한사항
  • 1 ≤ ≤ 100

 

입출력 예
n result
10 5
15 8

 

입출력 예 설명

입출력 예 #1

  • 10 이하 합성수는 4, 6, 8, 9, 10로 5개입니다. 따라서 5를 return 합니다.

입출력 예 #1

  • 15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15로 8개입니다. 따라서 8을 return 합니다.

 

풀이
class Solution {
    public int solution(int n) {
        int answer = 0;
        
        //1부터 n까지의 자연수 중 합성수의 개수를 구하기 위한 반복문
        for(int i = 1; i <= n; i++) {
            int count = 0; //약수의 개수 count, 각 수마다 count 초기화
            for(int j = 1; j<= i; j++) {
                count += (i % j == 0) ? 1 : 0; //나누어 떨어지면 약수이기 때문에 count +1
            }
            answer += (count >= 3) ? 1 : 0; //약수의 개수가 세 개 이상이면 합성수이기 때문에 answer +1
        }
        return answer; //합성수의 개수 return
    }
}
반응형