Coding Test/codility

[codility] TapeEquilibrium c++

owls 2022. 4. 9. 19:06
728x90
  • 문제

 |(A[1] + ... + A[P-1] ) - (A[P] + ... +A[N])| 을 구하는 문제이다.

즉, A배열의 0~(P-1)번 까지 합 - 나머지 원소의 합의 절댓값을 구한다.

P 값에 따른 절댓값 중 최솟값을 구하는 문제이다.

P의 범위 :  (0 < P < N)

  • 문제 해결
#include <string>
#include <algorithm>
#include <vector>
#include <numeric>
#include <limits>


int solution2(std::vector<int> &A) {
	
	long end = std::accumulate(A.begin(), A.end(), 0);
	long len = A.size();

	long front =0;
	int minimum = INT8_MAX;
	for (int i = 0; i < len - 1; i++) {
		front += A.at(i);
		end -= A.at(i);
		
		int sumP = std::abs(front - end);
		minimum = std::min(minimum, sumP);

	}

	return minimum;

}

#define TapeEquilibrium

#ifdef TapeEquilibrium

int main() {

	std::vector<int> nVec = { 3,1,2,4,3 };
	std::cout << solution2(nVec);

	return 0;
}
#endif

728x90