Algorithm/Codility

Lesson3-3. TapeEquilibrium

hamaganatanadda 2019. 6. 22. 17:40

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