724. Find Pivot Index

하나·2023년 4월 1일
0

코딩테스트

목록 보기
13/16

  • 처음 풀이
class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        # 왼 오 합이 같아질때 인덱스
        for pivot_index in range(0,len(nums)): 
            if pivot_index == len(nums)-1:
                if sum(nums[:pivot_index]) == 0 :
                    return(pivot_index)
            else:
                if sum(nums[:pivot_index]) == sum(nums[pivot_index+1:]): 
                    return(pivot_index)      
        return -1

# 8550 ms (Beats 6.86%)
# 15.2 MB (Beats 36%)

맨 마지막 인덱스가 피봇일 때를 고려해야하는 코드라서 하드코딩 느낌 ..?

  • 수정한 풀이
    def pivotIndex(self, nums: List[int]) -> int :
        left_sum = 0
        right_sum = sum(nums)

        for idx, ele in enumerate(nums):
            right_sum -= ele
            if left_sum == right_sum:
                return idx
            left_sum += ele
            
        return -1
  • sum 연산을 최소화 하기 위해 미리 전체 리스트의 합을 rightsum 변수로 담아두고 원소를 하나씩 빼는 방식
  • 시간이 8550 ms 에서 149 ms 로 줄었다.

0개의 댓글