본문 바로가기
프로그래밍/Codility

[C#] codility TapeEquilibrium 문제풀이2

by 뽀도 2021. 1. 1.

[문제]

 

TapeEquilibrium coding task - Learn to Code - Codility

Minimize the value |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|.

app.codility.com

 

전에 이 문제를 풀었을때는 성능이 진짜 별로였는데, 오늘은 성능. 문제를 해결하기 위해 끙끙 거리다 드뎌 해결했다.

 

[답]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public int Solution(int[] A)
        {
            int result = 0, sum = 0;
            
            for(int j = 0; j<A.Length; ++j)
            {
                sum += A[j];
            }
 
            int left = 0, right = 0, temp = 0, dif = 0;
 
            for (var i = 0; i < A.Length - 1++i)
            {
                temp += A[i];
 
                left = sum - temp;
                right = sum - left;
 
                if (left > right)
                    dif = left - right;
                else
                    dif = right - left;
 
                if (i == 0)
                    result = dif;
                else
                {
                    if (result > dif)
                        result = dif;
                }
            }
 
            return result;
        }
cs

 

[전 후 비교]

왼쪽 - 전에 짠거 , 오른쪽 - 오늘 짠거

 

]

 

 

[풀이]

* 전체 값을 미리 계산하고 하는것이 관건!!

* O(n)의 성능이 나오게 하는게.. 답이었나보다 

반응형

'프로그래밍 > Codility' 카테고리의 다른 글

MaxCounters  (0) 2021.01.02
[C#] FrogRiverOne  (0) 2021.01.02
[c#] Codility - PermCheck  (0) 2019.09.03
[c#] codility - TapeEquilibrium - 좀 더 생가해보기.  (0) 2019.09.02
[c#] Codility - PermMissingElem  (0) 2019.09.01

댓글