반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

코딜리티 6 본문

이직

코딜리티 6

닉의네임 2022. 7. 23. 12:07
반응형
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].

 

이것도 30%

// write your code in Java SE 8
int ret = A[0];
for (int k = 1; k < A.length; k++) {
    int a = 0;
    int b = 0;

    for (int i = 0; i < A.length; i++) {
        if (k > (i )) {
            a += A[i];
        } else {
            b += A[i];
        }
    }

    int abs = Math.abs(a - b);
    if (ret > abs) {
        ret = abs;
    }
}
return ret;

 

아 써글 더느려

public static int solution(int[] A) {
    // write your code in Java SE 8
    int ret = Math.abs(A[0]);
    for (int k = 1; k < A.length; k++) {


        int a = Arrays.stream(Arrays.copyOfRange(A, 0, k)).sum();
        int b = Arrays.stream(Arrays.copyOfRange(A, k, A.length)).sum();

        int abs = Math.abs(a - b);
        if (ret > abs) {
            ret = abs;
        }
    }
    return ret;
}
반응형

'이직' 카테고리의 다른 글

코딜리티 8  (0) 2022.07.23
코딜리티 7  (0) 2022.07.23
코딜리티 4  (0) 2022.07.22
코딜리티 3  (0) 2022.07.22
코딜리티2  (0) 2022.07.22
Comments