[LeetCode] Find Pivot Index

아르당·2026년 2월 19일

LeetCode

목록 보기
161/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

정수 배열 nums가 주어졌을 때, 이 배열의 피벗 인덱스를 계산해라.

피벗 인덱스는 해당 인덱스 바로 왼쪽에 있는 모든 숫자의 합과 해당 인덱스 바로 오른쪽에 있는 모든 숫자의 합이 같아지는 인덱스이다.

인덱스가 배열의 왼쪽 끝에 있으면 왼쪽에 요소가 없으므로 0이 된다. 이는 배열의 오른쪽 끝에도 동일하게 적용된다.

가장 왼쪽 피벗 인덱스를 반환해라. 그러한 인덱스가 존재하지 않으면 -1을 반환해라.

Example

#1
Input: nums = [1, 7, 3, 6, 5, 6]
Output: 3
Explanation:
피벗 인덱스는 3이다.
왼쪽 합계는 nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11
오른쪽 합계는 nums[4] + nums[5] = 5 + 6 = 11

#2
Input: nums = [1, 2, 3]
Output: -1
Explanation:
조건을 만족하는 인덱스가 없다.

#3
Input: nums = [2, 1, -1]
Output: 0
Explanation:
피벗 인덱스는 0이다.
왼쪽 합계는 0 (인덱스 0의 왼쪽은 요소가 없다)
오른쪽 합계는 nums[1] + nums[2] = 1 + -1 = 0

Constraints

  • 1 <= nums.length <= 10^4
  • -1000 <= nums[i] <= 1000

Solved

class Solution {
    public int pivotIndex(int[] nums) {
        int total = 0;

        for(int num : nums){
            total += num;
        }

        int leftTotal = 0;
        
        for(int i = 0; i < nums.length; i++){
            int rightTotal = total - leftTotal - nums[i];

            if(rightTotal == leftTotal){
                return i;
            }

            leftTotal += nums[i];
        }

        return -1;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글