코딩 테스트/Level 4

쿠키 구입

컴닥 2022. 12. 4. 21:28
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/49995

def solution(cookie):
    def total(a, b):
        return totals[b] - totals[a]

    totals = [0]
    for index, each in enumerate(cookie):
        totals.append(totals[index] + each)
    answers = set()
    total_max = sum(cookie) / 2
    for mid in range(1, len(cookie)):
        first_total_set = set()
        for first in range(mid, - 1, -1):
            first_total = total(first, mid)
            if first_total > total_max:
                break
            first_total_set.add(first_total)
        end_total_set = set()
        for end in range(mid + 1, len(cookie) + 1):
            end_total = total(mid, end)
            if end_total > total_max:
                break
            end_total_set.add(end_total)
        answers.update(first_total_set.intersection(end_total_set))
    return max(answers) if answers else 0
정확성  테스트
테스트 1 〉	통과 (0.01ms, 10.2MB)
테스트 2 〉	통과 (0.17ms, 10.4MB)
테스트 3 〉	통과 (0.69ms, 10.3MB)
테스트 4 〉	통과 (0.32ms, 10.2MB)
테스트 5 〉	통과 (0.80ms, 10.2MB)
테스트 6 〉	통과 (25.49ms, 10.3MB)
테스트 7 〉	통과 (45.46ms, 10.3MB)
테스트 8 〉	통과 (60.68ms, 10.4MB)
테스트 9 〉	통과 (153.52ms, 10.6MB)
테스트 10 〉	통과 (0.02ms, 10.2MB)
테스트 11 〉	통과 (0.02ms, 10.2MB)
테스트 12 〉	통과 (0.01ms, 10.2MB)
테스트 13 〉	통과 (0.04ms, 10.2MB)
테스트 14 〉	통과 (1.85ms, 10.2MB)
테스트 15 〉	통과 (1.72ms, 10.2MB)
테스트 16 〉	통과 (1.75ms, 10.3MB)
테스트 17 〉	통과 (1.67ms, 10.3MB)
테스트 18 〉	통과 (2.11ms, 10.2MB)
테스트 19 〉	통과 (1.55ms, 10.2MB)
테스트 20 〉	통과 (1.57ms, 10.3MB)
테스트 21 〉	통과 (1.91ms, 10.4MB)
테스트 22 〉	통과 (0.44ms, 10.1MB)
테스트 23 〉	통과 (155.15ms, 10.4MB)
테스트 24 〉	통과 (1.62ms, 10.2MB)
테스트 25 〉	통과 (1.79ms, 10.4MB)
테스트 26 〉	통과 (157.29ms, 10.3MB)
효율성  테스트
테스트 1 〉	통과 (159.36ms, 10.3MB)
테스트 2 〉	통과 (155.15ms, 10.4MB)
테스트 3 〉	통과 (164.42ms, 10.4MB)
테스트 4 〉	통과 (162.16ms, 10.4MB)
테스트 5 〉	통과 (179.89ms, 10.3MB)
테스트 6 〉	통과 (578.46ms, 10.3MB)
테스트 7 〉	통과 (601.22ms, 10.3MB)
테스트 8 〉	통과 (587.23ms, 10.5MB)

헐 이런 게 있다니..
속도마저..
https://docs.python.org/ko/3/library/itertools.html#itertools.accumulate

def solution(cookie):
    from itertools import accumulate
    answer = 0
    for mid in range(1, len(cookie)):
        if temp := set(accumulate(cookie[mid - 1::-1])) & set(accumulate(cookie[mid:])):
            answer = max(answer, *temp)
    return answer
정확성  테스트
테스트 1 〉	통과 (0.00ms, 10.3MB)
테스트 2 〉	통과 (0.07ms, 10.3MB)
테스트 3 〉	통과 (0.12ms, 10.2MB)
테스트 4 〉	통과 (0.18ms, 10.1MB)
테스트 5 〉	통과 (0.29ms, 10.1MB)
테스트 6 〉	통과 (8.97ms, 10.2MB)
테스트 7 〉	통과 (19.18ms, 10.3MB)
테스트 8 〉	통과 (22.82ms, 10.3MB)
테스트 9 〉	통과 (50.48ms, 10.2MB)
테스트 10 〉	통과 (0.01ms, 10MB)
테스트 11 〉	통과 (0.01ms, 10.2MB)
테스트 12 〉	통과 (0.01ms, 10.2MB)
테스트 13 〉	통과 (0.02ms, 10.1MB)
테스트 14 〉	통과 (0.69ms, 10.1MB)
테스트 15 〉	통과 (0.60ms, 10.1MB)
테스트 16 〉	통과 (0.70ms, 10.3MB)
테스트 17 〉	통과 (0.63ms, 10.2MB)
테스트 18 〉	통과 (0.75ms, 10MB)
테스트 19 〉	통과 (0.98ms, 10.1MB)
테스트 20 〉	통과 (0.96ms, 10.1MB)
테스트 21 〉	통과 (0.70ms, 10MB)
테스트 22 〉	통과 (0.27ms, 10MB)
테스트 23 〉	통과 (39.48ms, 10.3MB)
테스트 24 〉	통과 (0.59ms, 10MB)
테스트 25 〉	통과 (0.66ms, 10.1MB)
테스트 26 〉	통과 (39.91ms, 10.1MB)
효율성  테스트
테스트 1 〉	통과 (48.65ms, 10.3MB)
테스트 2 〉	통과 (40.94ms, 10.2MB)
테스트 3 〉	통과 (59.91ms, 10.2MB)
테스트 4 〉	통과 (54.77ms, 10.2MB)
테스트 5 〉	통과 (55.21ms, 10.2MB)
테스트 6 〉	통과 (178.61ms, 10.4MB)
테스트 7 〉	통과 (196.74ms, 10.5MB)
테스트 8 〉	통과 (175.09ms, 10.5MB)
반응형