첫번째 코드
약수를 구하는 방법이 포인트겠군...
값에 반복해서 나눠서 맞는거면 count에 추가하는 형식이면 약수를 구하는 방법!
def solution(number, limit, power):
divisor = []
count = 0
for i in range(1, number+1):
for j in range(1, i+1):
if i%j == 0:
count += 1
divisor.append(count)
for i in range(number):
if divisor[i] > limit:
divisor[i] = power
return sum(divisor)
시간초과....오류?
두번째 코드
아 count를 리셋시키지 않아서 미친듯이 합해지고 있었다..
def solution(number, limit, power):
divisor = []
count = 0
for i in range(1, number+1):
count = 0
for j in range(1, i+1):
if i%j == 0:
count += 1
divisor.append(count)
for i in range(number):
if divisor[i] > limit:
divisor[i] = power
return sum(divisor)
시간초과요..?
세번째 코드
계산 수를 줄일 수 있는 위치는 약수를 구하는 방법에서 일 것이고,
약수는 하나가 있으면 하나의 쌍이 존재하는 법
단지 제곱근이 존재하는 경우가 1개만 있는 것이지!
ex1) 15 → 1, 3, 5, 15
ex2) 16 → 1, 2, 4, 8, 16
위를 반영해서 코드를 작성하자!
def solution(number, limit, power):
divisor = []
count = 0
for i in range(1, number+1):
count = 0
interval = int((i)**0.5)
for j in range(1, interval+1):
if i%j == 0:
if i == j**2:
count += 1
else:
count += 2
divisor.append(count)
for i in range(number):
if divisor[i] > limit:
divisor[i] = power
return sum(divisor)
통과!
링크
programmers/프로그래머스/1/136798. 기사단원의 무기 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com