취미처럼

[Codility] Lesson 3. Time Complexity - TapeEquilibrium 본문

Algorithm/Codility

[Codility] Lesson 3. Time Complexity - TapeEquilibrium

sirius 2021. 3. 29. 10:53


배열에는 첫 번째 파트와 두 번째 파트가 있다.
0부터 배열의 차수까지가 첫번째 파트, 그 다음부터 마지막까지가 두번째 파트이다.
첫번째 파트에서 두번째 파트를 마이너스 한 값의 절대값 중에서 최소값을 구한다.


int[] A = {1,2,3,4,5};
0차 (1) - (2 + 3 + 4 + 5) = |-13|
1차 (1 + 2) - (3 + 4 + 5) = |-9|
2차 (1 + 2 + 3) - (4 + 5) = |-3| 
3차 (1 + 2 + 3 + 4) - (5) = |5|

 

public int solution(int[] A) {
  int total = 0;
  int first = 0;
  int second = 0;
  int min = Integer.MAX_VALUE;
  
  for (int i = 0; i < A.length; i++) {
  	total += A[i];
  }
  
  for (int i = 1; i < A.length; i++) {
  	first += A[i - 1];
 	second = total - first;
 	min = Math.min(min, Math.abs(first - second));
  }
  return min;
}
Comments