코딩 테스트/Codility

코딜리티 - TapeEquilibrium 문제 (자바)

app.codility.com/programmers/lessons/3-time_complexity/

 

3. Time Complexity lesson - Learn to Code - Codility

Count minimal number of jumps from position X to Y.

app.codility.com

앞에서 부터 더한 누적값 배열을 만들고

뒤에서 부터 더한 누적값 배열을 만들어서 

두 배열의 일정 위치의 값을 빼고 절대값으로 하여 작은 값을 구함

// 코딜리티 - TapeEquilibrium 문제
class TapeEquilibrium {
    public int solution(int[] A) {
        // write your code in Java SE 8
        int length = A.length;
        int[] frontStock = new int[length];
        int[] backStock = new int[length];

        for(int i = 1; i < length; i++) {
            frontStock[i] = frontStock[i - 1] + A[i - 1];
        }

        backStock[length - 1] = A[length - 1];
        for (int i = length - 2; i > 0; i--) {
            backStock[i] = backStock[i + 1] + A[i];
        }

        int min = Integer.MAX_VALUE;
        for (int i = 1; i < length; i++) {
            min = Math.min(min, Math.abs(frontStock[i] - backStock[i]));
        }
        return min;
    }
}