하루에 하나-15

정인창·2021년 9월 24일
0

코딩테스트 연습

목록 보기
15/19

def solution(n):
    import math
    answer = []
    t = int(math.sqrt(n))
    for i in range(1, t+1):
        if (n % i == 0) & (i != n//t):
            answer.append(i)
            answer.append(n//i)
        elif (n % i == 0) & (i == n//t):
            answer.append(i)
    return sum(answer)
  • 약수를 구해주는 모듈이 있지만, 사용하지 않고 풀었습니다.
  • 예를 들면 12의 약수라면 1, 2, 3, 4, 6, 12로 1, 2, 3 까지만 돌면 되고, 그 이후로는 어차피 12를 나눠준 몫이므로 굳이 돌 필요가 없습니다.
  • 따라서 sqrt(n)값의 내림을 한 값까지만 반복을 돕니다.
  • if와 elif를 사용한 이유는 16처럼 어떤 수의 제곱인 경우엔 i와 n을 i로 나눠준 몫이 들어갈 필요가 없기 때문에 if~ elif~를 사용했습니다.

profile
Data science

0개의 댓글