본문 바로가기

코딩테스트

프로그래머스 기사단원의 무기 PYTHON

def solution(number, limit, power):
    answer = 0
    numbers = [i+1 for i in range(number)]
    for i in range(len(numbers)):
        for j in range(1,numbers[i]+1):
            if numbers[i]%j == 0:
                answer+= 1
        numbers[i] = answer
        answer = 0
    for i in range(len(numbers)):
        if numbers[i] > limit:
            numbers[i] = power
    print(numbers)
    return sum(numbers)

약수를 찾는 과정에서 for문을 이용하여 약수를 찾으니 몇개의 테스트케이스에서 시간초과가 발생했다.

import math
def solution(number, limit, power):
    answer = []
    count = 0
    numbers = [i+1 for i in range(number)]
    for i in range(len(numbers)):
        for j in range(1,int(math.sqrt(numbers[i])+1)):
            if numbers[i]%j == 0:
                count += 1
                if j != numbers[i]//j:
                    count += 1
        answer.append(count)
        count = 0
    print(count)
    for i in range(len(answer)):
        if answer[i] > limit:
            answer[i] = power
    return sum(answer)

제곱근을 이용하여 약수의 개수를 구하니 시간초과오류를 해결할수 있었다.