Programming/LeetCode

[Dart] 724. Find Pivot Index

Meezzi 2025. 4. 21. 09:33
728x90

1. 문제

https://leetcode.com/problems/find-pivot-index/description/?envType=study-plan-v2&envId=leetcode-75

 

 

2. 요구사항

1) 정수배열 nums가 주어질 때, 피벗 인덱스를 찾아야 한다.

2) 피벗 인덱스란 인데스 i의 왼쪽에 있는 모든 원소의 합과 오른쪽에 있는 모든 원소의 합이 같은 위치를 말한다.

3) 피벗 인덱스 i를 찾으면 해당 값을 반환하고, 존재하지 않으면 -1을 반환한다.

4) 만약 피벗 인덱스가 여러 개일 경우 가장 왼쪽에 있는 인덱스를 반환한다.

 

 

 

3. 코드

class Solution {
  int pivotIndex(List<int> nums) {
    // 전체 합계를 저장할 변수
    int total = 0;
    
    // 왼쪽 요소들의 합을 저장할 변수
    int leftSum = 0;

    // 리스트의 모든 원소를 더해서 전체 합계를 계산
    for (int i = 0; i < nums.length; i++) {
      total += nums[i];
    }

    // 다시 리스트를 순회하면서 피벗 인덱스를 찾음
    for (int i = 0; i < nums.length; i++) {
      // 왼쪽 합(leftSum) == 오른쪽 합(total - leftSum - nums[i])일 때 피벗 인덱스
      // nums[i]를 빼는 이유는 피벗 인덱스의 값은 합에 포함되지 않기 때문
      if (leftSum == total - leftSum - nums[i]) {
        return i;
      }
      // 현재 인덱스 값을 leftSum에 더함
      leftSum += nums[i];
    }

    // 피벗 인덱스를 찾지 못한 경우 -1 반환
    return -1;
  }
}

 

 

 

728x90