ror_coding

[Programmers] 기사단원의 무기 - 136798 본문

Algorithm/Python

[Programmers] 기사단원의 무기 - 136798

ro_rdil_31 2024. 10. 12. 11:22
728x90

약수 개수 효율적 연산 코드 좀 까먹지 말자!!!!!!!!! 

 

Question

 

기사단원의 수를 나타내는 정수 number와 이웃나라와 협약으로 정해진 공격력의 제한수치를 나타내는 정수 limit와 제한수치를 초과한 기사가 사용할 무기의 공격력을 나타내는 정수 power가 주어졌을 때, 무기점의 주인이 무기를 모두 만들기 위해 필요한 철의 무게를 return 하는 solution 함수를 완성하시오.

 

 

Point

 

  • 약수 개수 연산 코드
    • sum ( 1 for i in range(1,int(n**0.5)+1) if n%i == 0 ) * 2
  • 완전제곱이면 (즉 4 (1, 2, 4) 면 2가) 중복되니 1개 빼주는 코드
    • if n**0.5 == int(n**0.5) : length -= 1

 

 

Code

 

def solution(num, limit, p):
    answer = 0
    for n in range(1,num+1):
        length =  sum(1 for i in range(1,int(n**0.5)+1) if n%i==0) * 2
        if n**0.5 == int(n**0.5) : length -= 1
        answer += p if length > limit else length
            
    return answer

 

now me

On my github

 

728x90