문제 설명
- 목표:
number
개의 기사가 있으며, 각 기사는 본인 번호의 약수의 개수에 해당하는 공격력을 가진다. 하지만 공격력이 limit
를 넘으면 power
로 제한된다.
- 입력:
number
, limit
, power
- 출력: 모든 기사의 공격력을 합한 값을 반환
해결 전략
- 약수의 개수를 구하는 함수: 주어진 숫자의 약수 개수를 계산하는 함수를 만든다.
- 공격력 점검 및 조정: 각 기사의 공격력을 계산하면서,
limit
을 초과하면 power
로 변경한다.
- 총 공격력 합산: 모든 기사의 공격력을 합산하여 반환한다.
구현 내용
count_divisors(n)
: 주어진 n
의 약수 개수를 세는 함수.
solution(number, limit, power)
: 전체 기사의 공격력을 계산하여 반환하는 함수.
코드 구현
def count_divisors(n):
count = 0
for i in range(1, n + 1):
if n % i == 0:
count += 1
return count
def solution(number, limit, power):
weight = 0
for knight in range(1, number + 1):
total_power = count_divisors(knight)
if total_power > limit:
weight += power
else:
weight += total_power
return weight
number = 10
limit = 3
power = 2
print(solution(number, limit, power))
알게 된 점
range(이상, 미만)
의 개념을 잊지 말자. (예: range(1, n + 1)
)
- 약수 개수를 구하는 함수 구조는 자주 사용되므로 숙지하자.