Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 합성수 찾기 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

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

luke-king 2026. 1. 12. 23:04

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/120846

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

 

풀이.


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부터 주어진 n의 수 중에 합성 수 즉 약수가 3개 이상인 수가 몇 개인지 찾는 문제다.

바로 풀이 해보겠다.

 

1.  1부터 n까지의 수의 약수를 구하기 위해 for문을 사용해준다. 그럼 첫 번째 for문은 1~n까지 잘 나오는 걸 확인할 수 있다.

 

2. 다음에 for문 안에 지역 변수로 cnt를 생성해준다. cnt는 각 수의 약수가 몇 개인지 카운트하기 위한 용도다.

 

3.  다시 for문을 사용해 준다. 결국 2중 for문을 사용하는데 1번째 for문에서 주어진 수를 가지고 2번째 for문에서 i만큼 반복을 통해 조건식에서 i % j 가 0(약수)인 수를 cnt++ 해준다.

 

4. 마지막으로 1번째 for문으로 돌아가기 전에 cnt가 3 이상 즉 약수가 3개 이상 이었다면 answer++ 증가 연산 해주면 끝이다.