본문 바로가기
프로그래머스/1단계

합성수 찾기

by 긴가우딘 2024. 5. 18.

문제 설명

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


제한사항

  • 1 ≤ n ≤ 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합니다.

 

이전에 약수 찾기 문제를 활용할 수 있겠다는 생각이 들었다

i%j == 0이 3개 이상이면 ++하기

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i=1; i<=n; i++) {
           for(int j=1; j<=n; j++) {
                if(i%j == 0) {
                    answer++;
                }
            }
        }
        
        return answer;
    }
}

 

여기까지는 완료했는데 3개 이상이면 이 조건을 만족하려면 어떻게 해야할지 모르겠다

계속 검색해보고 찾아보았지만…

gpt한테 물어보았다

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<=n; j++) {
                if(i%j == 0) {
                    count++;
                }
            }
            
            if(count>=3) {
                answer++;
            }
        }
        
        return answer;
    }
}

 

!!! 왜 count를 사용할 생각을 못했을까!!!

저번 문제를 풀 때도 그렇고 이번 문제도 그렇고 for문 내에서 지역변수를 활용하는 방법을 잘 고민해봐야 할 것 같다

'프로그래머스 > 1단계' 카테고리의 다른 글

행렬의 덧셈  (2) 2024.05.22
하샤드 수  (1) 2024.05.21
외계어 사전  (0) 2024.05.18
약수의 합 (ArithmeticException: / by zero)  (0) 2024.05.17
푸드 파이트 대회  (2) 2024.05.15