Coding Test Practice/Python

[프로그래머스 코딩테스트 연습 Lv. 1] 기사단원의 무기

y2r1m 2023. 3. 13. 03:17

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

 

프로그래머스

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

programmers.co.kr

 

def solution(number, limit, power):
    cnt_list = []
    for num in range(1, number+1): # 1부터 number까지 각각 약수 개수 구하기
        cnt = 0
        for n in range(1, int((num+1)**(1/2))+1):
            if num % n == 0 and n**2 != num:
                cnt += 2 # 약수는 항상 짝을 가지므로 짝 개수까지 한 번에 계산
            if n**2 == num:
                cnt += 1
        cnt_list.append(cnt)
        
    for i in range(len(cnt_list)):
        if cnt_list[i] > limit:
            cnt_list[i] = power
                   
    answer = sum(cnt_list)
    
    return answer