-
억억단을 외우자코딩 테스트/Level 3 2022. 11. 25. 01:15반응형
https://school.programmers.co.kr/learn/courses/30/lessons/138475
def solution(e, starts): divisors = [0 for _ in range(e + 1)] for i in range(1, e + 1): for j in range(i, e + 1): if (temp := i * j) > e: break divisors[temp] += 1 if i == j else 2 checker = [0] * (e + 1) # [0 for _ in range(e + 1)] max_num = 0 for index in range(e, 0, -1): if divisors[index] >= max_num: max_num = divisors[index] checker[index] = index else: checker[index] = checker[index + 1] return [checker[start] for start in starts]
테스트 1 〉 통과 (0.01ms, 10.2MB) 테스트 2 〉 통과 (0.01ms, 10.2MB) 테스트 3 〉 통과 (0.07ms, 10.2MB) 테스트 4 〉 통과 (0.37ms, 10.2MB) 테스트 5 〉 통과 (0.79ms, 10.2MB) 테스트 6 〉 통과 (4.82ms, 10.3MB) 테스트 7 〉 통과 (10.28ms, 10.4MB) 테스트 8 〉 통과 (51.90ms, 11MB) 테스트 9 〉 통과 (1394.98ms, 28.5MB) 테스트 10 〉 통과 (8363.81ms, 91.7MB)
이렇게도 가능...
def solution(e, starts): divisors = [0 for _ in range(e + 1)] for i in range(1, e + 1): for j in range(i, e + 1): if (temp := i * j) > e: break divisors[temp] += 1 if i == j else 2 max_num = 0 for index in range(e, 0, -1): if divisors[index] >= max_num: max_num = divisors[index] divisors[index] = index else: divisors[index] = divisors[index + 1] return [divisors[start] for start in starts]
반응형