본문 바로가기
코딩테스트/프로그래머스 lv 1

[Python]기사단원의 무기

by 잼있는잼니 2023. 3. 31.

문제요약

  • 기사단의 기사는 1~number까지의 번호로 지정
  • 기사의 무기 공격력은 자기 번호 약수
  • 무기 공격력(약수)이 limit를 넘을시 무기 공격력이 power로 제한됨
  • return 값은 무기 공격력의 합(약수의 합) * 철 무게(공격력당 1kg)

 

 

문제풀이

 

def solution(number, limit, power):
    answer = 0
    
    for i in range(1,number+1):
        iron = 0
        for j in range(1,int(i**0.5)+1): # 약수 개수 구하기
            if i%j == 0: 
                iron += 2
        if i ** 0.5 == int(i**0.5): # 제곱슈 중복 제거
            iron -= 1
        
        if iron <= limit:
            answer += iron
        else:
            answer += power
    return answer

 

  • 1부터 number까지의 약수를 구한다
  • 루트 n만큼 순회해서 복잡도를 줄이기
  • n이 제곱수일때, 중복이 되어 들어가서 중복을 제거
  • 그리고 각 값이 limit보다 작으면 iron이 answer에 더해지고, lmit보다 크면 power를 리턴

'코딩테스트 > 프로그래머스 lv 1' 카테고리의 다른 글

완주하지 못한 선수  (0) 2023.01.20
과일 장수  (0) 2023.01.17

댓글