-
(코딜리티) Lesson 10. [Prime and composite numbers] : CountFactors - pythonAlgorithm/코딜리티 2021. 1. 30. 21:06
문제 : app.codility.com/programmers/lessons/10-prime_and_composite_numbers/count_factors/
문제 내용
양수인 숫자 N이 주어질 때, N의 약수 갯수를 구하시오.
제한 사항
- N은 1~2,147,483,647
코드
def solution(N): count = 0 i = 0 while True: i +=1 n = N%i m = N//i if i > m: return count if n == 0: if i == m: count += 1 return count else : count += 2
해설
약수를 구하는 문제로, 만약 숫자를 24로 주어지면 24까지 반복문을 도는 것이 아니라, 대칭적으로 움직이기때문에, 반복문하나에 약수조건이 만족하면 count를 +2씩 합니다.
그리고 0부터 1개씩 늘리면서 나누다가, 나누는 값이 몫보다 큰 경우는 대칭적인 부분 까지 왔기에 반복문을 종료해줍니다.
그리고 9와 같은 경우는, 1, 3, 9로 총 3개이며, 3부분이 겹쳐서 이와 같은 경우는 count를 1개만 늘려준다음, 반복문을 종료해줍니다.
'Algorithm > 코딜리티' 카테고리의 다른 글
댓글