매일프로그래밍 - 코딩테스트 11/10/2019

MP·2019년 12월 16일
0

문제

정수 배열이 주어졌을 때, 왼쪽과 오른쪽의 합이 같은 값이 되는 위치를 찾으시오.
즉, A라는 배열이 있다면 A[0] + … + A[i - 1]과 A[i + 1] + … + A[n]이 같은 값이 되는 i의 위치가 답이 됩니다.
만약 A[1] + … + A[n]이 0이라면 0도 답이 됩니다.

Input

[0, -3, 5, -4, -2, 3, 1, 0]

Output

[0, 3, 7]

int findPivots(int in[], int out[], int n) {
  int sum, sumLeft, sumRight, i, j;
  for (i = 0, sum = 0; i < n; i++) {
    sum += in[i];
    out[i] = -1;
  }
  for (i = 0, sumLeft = 0, sumRight = sum, j = 0; i < n; i++) {
    sumLeft += in[i];
    sumRight -= in[i];
    if (sumLeft == sumRight) {
      out[j++] = i;
    }
  }
  return j;
}

0개의 댓글