L : https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/
Q : 왼쪽 , 오른쪽의 합의 차이중에 가장 작은값을 찾음.
A : 모든 합을 구한후 한쪽은 마이너스 한쪽은 플러스로 계산
[Delphi]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function solution(A: array of longint; N: longint): longint;
var
ii, iPlus, iMinus, iResult : longint;
begin
iMinus := 0;
iPlus := 0;
for ii := Low(A) to High(A) do
begin
iMinus := iMinus + A[ii];
end;
for ii := Low(A) to High(A) - 1 do
begin
iMinus := iMinus - A[ii];
iPlus := iPlus + A[ii];
if ii = 0 then iResult := Abs(iPlus - iMinus)
else if (Abs(iPlus - iMinus) < iResult) then iResult := Abs(iPlus - iMinus);
end;
Exit(iResult);
end;
|
cs |
※ 수정할 부분이 있으면 알려주세요. 로직 짠 후 구글링으로도 참고합니다.
'Algorithm > Codility' 카테고리의 다른 글
Lesson3-2. PermMissingElem (0) | 2019.06.20 |
---|---|
Lesson3-1. FrogJmp (0) | 2019.06.20 |
Lesson2-2. CyclicRotation (0) | 2019.06.20 |
Lesson2-1. OddOccurrencesInArray (0) | 2019.06.20 |
Lesson1. BinaryGap (0) | 2019.06.19 |