내 코드 (시간 초과)
def solution(number, limit, power): a = [] # 약수 구하기 for i in range(1, number+1): cnt = 0 for j in range(1, i+1): if i%j == 0: cnt += 1 a.append(cnt) # 넘는 애들 -> Power로 대체 for i in range(number): if a[i] > limit: a[i] = power ''' return sum(a)
내 코드
def solution(number, limit, power): a = [] # 약수 구하기 for i in range(1, number+1): cnt = 0 for j in range(1, int(i**0.5)+1): if i%j == 0: if j == i//j: cnt += 1 else: cnt += 2 a.append(cnt) # 넘는 애들 -> Power로 대체 for i in range(number): if a[i] > limit: a[i] = power ''' return sum(a)
+8
테스트 1 〉 통과 (32.75ms, 10MB)
테스트 2 〉 통과 (5.18ms, 10.4MB)
테스트 3 〉 통과 (2.12ms, 10.3MB)
테스트 4 〉 통과 (6.93ms, 10.3MB)
테스트 5 〉 통과 (1.48ms, 10.3MB)
테스트 6 〉 통과 (30.67ms, 10.2MB)
테스트 7 〉 통과 (5.03ms, 10.3MB)
테스트 8 〉 통과 (4.63ms, 10.2MB)
테스트 9 〉 통과 (48.13ms, 10.3MB)
테스트 10 〉 통과 (2.11ms, 10.1MB)
테스트 11 〉 통과 (727.10ms, 10.8MB)
테스트 12 〉 통과 (808.54ms, 11.1MB)
테스트 13 〉 통과 (735.20ms, 11.1MB)
테스트 14 〉 통과 (753.19ms, 11MB)
테스트 15 〉 통과 (899.85ms, 11.1MB)
테스트 16 〉 통과 (860.90ms, 10.9MB)
테스트 17 〉 통과 (0.01ms, 10.1MB)
테스트 18 〉 통과 (818.37ms, 11MB)
테스트 19 〉 통과 (5.04ms, 10.2MB)
테스트 20 〉 통과 (4.93ms, 10.3MB)
테스트 21 〉 통과 (0.02ms, 10.2MB)
테스트 22 〉 통과 (0.02ms, 10.2MB)
테스트 23 〉 통과 (0.03ms, 10.2MB)
테스트 24 〉 통과 (850.71ms, 11MB)
테스트 25 〉 통과 (814.25ms, 11.1MB)
테스트 26 〉 통과 (1.34ms, 10.4MB)
테스트 27 〉 통과 (1.32ms, 10.2MB)
다른 풀이
def cf(n): # 공약수 출력 a = [] for i in range(1,int(n**0.5)+1): if n%i == 0: a.append(n//i) a.append(i) return len(set(a)) def solution(number, limit, power): return sum([cf(i) if cf(i)<=limit else power for i in range(1,number+1)])
다른 풀이
def get_cds(n, limit , power): cnt = 0 for i in range(1, int(n**(1/2))+1): # ★포인트1. 제곱근만큼만 반복 if n%i == 0: if i == n//i: # 제곱근일 경우 -> 1개만 카운트하기 cnt += 1 else: cnt += 2 # 제곱근이 아닐 경우, 2개 카운트 (i, n//i) if cnt > limit: # ★포인트2. 소수의 개수가 limit를 넘어가면 return power # 강제로 power만큼을 return return cnt ''' def solution(number, limit, power): total = 1 for i in range(2, number+1): len_cds = get_cds(i, limit, power) total += len_cds ''' return total