ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 억억단을 외우자
    코딩 테스트/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]
    반응형
Designed by Tistory.