최초 코드 - timeout

def solution(number, limit, power):
    answer = 0
    tmp = []
    for i in range(1, number + 1):
        cur = 0
        for j in range(1, i + 1):
            if i % j == 0:
                cur += 1
        tmp.append(cur)

    result = [tmp[i] if tmp[i] <= limit else power for i in range(number) ]

    return sum(result)

 

패스 코드

def solution(number, limit, power):
    answer = 0
    for i in range(1, number + 1):
        tmp = 0
        for j in range(1, int(i ** 0.5) + 1):
            if i % j == 0:
                tmp += 1
                if j ** 2 != i:
                    tmp += 1
            if tmp > limit:
                tmp = power
                break
        answer += tmp
    return answer

 

약수를 구할 때 1 ~ number만큼 구하면 시간 초과가 난다.

number의 제곱근 까지 구해 처리해보자.

+ Recent posts