룬아님의 취중코딩

Codility 6번 TapeEquilibrium 본문

개발/알고리즘

Codility 6번 TapeEquilibrium

룬아님 2019. 8. 5. 22:11

TapeEquilibrium

 

 

A non-empty array A consisting of N integers is given. Array A represents numbers on a tape.

Any integer P, such that 0 < P < N, splits this tape into two non-empty parts: A[0], A[1], ..., A[P − 1] and A[P], A[P + 1], ..., A[N − 1].

The difference between the two parts is the value of: |(A[0] + A[1] + ... + A[P − 1]) − (A[P] + A[P + 1] + ... + A[N − 1])|

In other words, it is the absolute difference between the sum of the first part and the sum of the second part.

For example, consider array A such that:

A[0] = 3 A[1] = 1 A[2] = 2 A[3] = 4 A[4] = 3

We can split this tape in four places:

  • P = 1, difference = |3 − 10| = 7 
  • P = 2, difference = |4 − 9| = 5 
  • P = 3, difference = |6 − 7| = 1 
  • P = 4, difference = |10 − 3| = 7 

Write a function:

class Solution { public int solution(int[] A); }

that, given a non-empty array A of N integers, returns the minimal difference that can be achieved.

For example, given:

A[0] = 3 A[1] = 1 A[2] = 2 A[3] = 4 A[4] = 3

the function should return 1, as explained above.

Write an efficient algorithm for the following assumptions:

  • N is an integer within the range [2..100,000];
  • each element of array A is an integer within the range [−1,000..1,000].

 

import java.util.*;

class Solution {
    public int solution(int[] A) {
        int totalB = 0;
        for(int i=1 ;i<A.length; i++){
            totalB += A[i];
        }
        int totalA = A[0];
        
        int mindis = Math.abs(totalB - totalA);
        for(int i=1 ;i<A.length-1; i++){
            totalB -= A[i];
            totalA += A[i];
            if(Math.abs(totalB-totalA)<mindis){
                mindis = Math.abs(totalB-totalA);
            }
        }
        
        return mindis;
    }
}
반응형

'개발 > 알고리즘' 카테고리의 다른 글

Codility 7번 PermCheck  (0) 2019.08.12
Codility 10번 MissingInteger  (0) 2019.08.11
Codility 5번 PermMissingElem  (0) 2019.08.05
Codility 8번 FrogRiverOne  (0) 2019.08.05
Codility 3번 OddOccurrencesInArray  (0) 2019.08.05
Comments