본문 바로가기

Algorithm

[leetcode 75] 724. Find Pivot Index

문제해석

정수 요소를 갖는 nums 배열이 주어졌을 때 pivot index를 계산해서 반환하기

pivot index는 pivot기준 왼쪽의 합과 오른쪽의 합이 같은 위치인 경우

만약 pivot이 0이면 왼쪽 배열의 합은 0임

이러한 pivot index 중 가장 왼쪽에 위치한 pivot index를 찾아서 반환

 

답 예

public int pivotIndex2(int[] nums) {
    int length = nums.length;
    int[] leftSum = new int[length];
    int[] rightSum = new int[length];

    for (int i = 1; i < nums.length; i++) {
        // pivot 기준 왼쪽 배열의 총합을 기록
        leftSum[i] = leftSum[i - 1] + nums[i - 1];

        // pivot 기준 오른쪽 배열의 총합을 기록
        rightSum[length - 1 - i] = rightSum[length - i] + nums[length - i];
    }

    for (int pivot = 0; pivot < nums.length; pivot++) {
        // 각 pivot 위치별로 총합이 동일 한 index를 찾기
        if (leftSum[pivot] == rightSum[pivot]) {
            return pivot;
        }
    }

    // 못찾은 경우 -1 반환
    return -1;
}