본문 바로가기
코딩테스트 입문/Python

[프로그래머스/programmers] 합성수 찾기

by Peter.JH 2023. 7. 17.
728x90

문제:

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

 

 

입력:

자연수 n

 

출력:

n이하의 합성수의 개수

 

 

제한사항:

  • 1 ≤ n ≤ 100
n result
10 5
15  8

 

solution.py:

 

def solution(n):
    answer = 0
    for i in range(n+1):
        cnt = 0
        for j in range(1, i+1):
            if i%j == 0:
                cnt += 1
        if cnt >= 3:
            answer += 1
    return answer

 

풀이설명: 

 

합성수는 약수의 개수가 3개 이상인 수를 말한다.

첫 번째 for 문에서 n 이하의 수를 찾아야 하므로 n+1

두 번째 for 문에서 i가 j로 나누어지면 j는 i의 약수이므로 약수의 개수를 저장하는 cnt에 +1

cnt(약수의 개수)가 3 이상이면 answer에 +1

728x90