TapeEquilibrium - (Codility, 시간복잡도)

2023. 1. 12. 10:13코딩 테스트 준비

728x90
반응형
def solution(A):
    P1 = 0
    P2 = sum(A)
    stack = []

    for i in range(1,len(A)):
        P1 += A[i-1]
        P2 -= A[i-1]
        ans = abs(P1-P2)
        if len(stack) == 0:
            stack.append(ans)
        elif stack[-1] > ans:
            stack.pop()
            stack.append(ans)
    
    return stack[-1]

 

sum의 시간복잡도는 O(n)이기 때문에 반복문에 들어가면 O(n**2)의 시간 복잡도가 나온다.

 

그러니 단순히 sum을 해주고 n-1까지 더하고 빼기를 반복하면 해결된다.

 

728x90
반응형