카테고리 없음

[프로그래머스] 기사단원의 무기 Python

Coding-Su 2024. 7. 1. 14:10
728x90

문제

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

정답

def solution(number, limit, power):
    answer = 0
    iron = [1]
    for i in range(2, number+1):
        count = 2
        for j in range(2, int(i**(1/2))+1):
            if i % j == 0:
                count += 1
                if (j**2) != i:
                    count += 1
        iron.append(count)
        
    for i in range(0, number):
        if iron[i] > limit:
            iron[i] = power
        answer += iron[i]
        
    return answer

2중 for문으로 풀면 시간초과로 실패하여 시간복잡도를 줄이기 위해 약수는 하나를 구한 후 나눌수 있다는 점을 이용하여 풀었습니다.

728x90