[Python] 프로그래머스 / level 1 / 기사단원의 무기 / 시간초과 / 에라토스테네스의 체

2024. 7. 31. 09:30Coding Test/Python

https://school.programmers.co.kr/learn/courses/30/lessons/136798#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(number, limit, power):
    num = [i for i in range(1, number+1)]
    result = []
    
    for j in num:
        answer = 0
        for k in range(1, j+1):
            if j%k==0:
                answer += 1
        if answer>limit:
            result.append(power)
        else:
            result.append(answer)
    
    return sum(result)

 

위와 같이 코드를 작성했지만 시간초과.

 

약수를 구하는 효율적인 방법 사용해보기.

 

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

 

ref : https://minnit-develop.tistory.com/16