develop/Python

[프로그래머스/파이썬] 합성수 찾기

hsleeee 2023. 3. 23. 17:39
반응형
SMALL
def solution(n):
    answer = 0
    for i in range(1, 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개 이상인 수

자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 반환하는 문제이다.

 

1부터 n+1까지의 for문을 실행하고

for문 안에 cnt를 선언한다, cnt에는 약수인 수들의 카운트를 저장한다.

 

이중 for문을 정말 싫어하지만,, 이번엔 어쩔 수 없이..

for문을 하나 더 만들고 1부터 i+1까지의 반복문을 실행한다.

i % j == 0 인 경우 j는 i의 약수가 된다. 약수일 경우 cnt의 카운트를 늘려준다.

 

j for문이 끝난 후 약수의 개수가 3 이상이라면 answer의 카운트를 늘려주어 답을 구한다.

반응형
LIST