find pivot

김대익·2022년 3월 31일
0

pivot을 중심으로 pivot 왼쪽의 합과 오른쪽의 합이 같아지는 pivot을 찾아서 리턴하시오

int pivotIndex (int [] nums) {
	int sum = accumulation(nums);
    int leftSum = 0;
    int rightSum = sum; //시작하기전에 pivot이 -1인 상태로 둔다
    
    int pastPivotNum = 0;
    
    for (int idx = 0; idx < nums.length; idx++) {
    	int num = nums[idx];
        rightSum = rightSum - num;
        leftSum = leftSum + pastPivotNum; //pivot 0인 상태부터 반복해서 계산
        if (leftSum == rightSum) { //계산결과 좌우 합이 같은 pivot이라면 
        	return idx; //그 위치 리턴
        }
        pastPivotNum = num; //다음에 왼쪽에 더해질 값(현재 pivot에 있는 값) 미리 저장
    }
}

이런 방식을 sliding 기법이라고 부른다

0개의 댓글