반응형
1. 문제

- 배열 nums가 주어질 때, 특정 인덱스를 기준으로 왼쪽과 오른쪽의 합이 같은 인덱스를 반환하라.
- 이를 pivot index라 하며, 배열의 양 끝에도 존재할 수 있으며 만약 존재하지 않으면 -1를 반환하라.
2. 풀이
function pivotIndex(nums: number[]): number {
let sum = 0;
nums.forEach(num => sum+=num);
let leftSum = 0;
for(let i =0; i< nums.length; i++) {
const rightSum = sum - nums[i] - leftSum;
if(leftSum === rightSum) return i;
leftSum+= nums[i]
}
return -1;
};
- 못 풀었다. 투 포인터 써서 어떻게 해보려고 했는데, 음수인 경우가 해결되지 않아서 다른 사람들의 풀이를 참고했다.
- 원리는 왼쪽 pivot index를 골라야 하므로, leftSum = 전체 총합 - 현재 인덱스 값 - rightSum을 이용해서 구한다.
비슷한 문제
https://leetcode.com/problems/find-the-middle-index-in-array/description/