문제요약
- 기사단의 기사는 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 |
댓글