본문 바로가기

공부하자/Codility

[Codility] Lesson9. MaxDoubleSliceSum (C#)

문제: app.codility.com/programmers/lessons/9-maximum_slice_problem/max_double_slice_sum/

 

MaxDoubleSliceSum coding task - Learn to Code - Codility

Find the maximal sum of any double slice.

app.codility.com

 

 

결과: 84% 다시 풀어야 함.

 

            if (A.Length <= 3)
                return 0;

            int preMaxSum = A[1];
            int postMaxSum = A[1];
            int maxpos = 1;
            int minpos = 1;

            for (int i = 2; i < A.Length - 1; i++)
            {
                preMaxSum = Math.Max(A[i], preMaxSum + A[i]);
                if (postMaxSum <= preMaxSum)
                {
                    postMaxSum = preMaxSum;
                    maxpos = i;
                }
            }

            int temp = postMaxSum;
            int min = A[maxpos];
            for (int i = maxpos; i >= 1; i--)
            {
                if (min > A[i])
                {
                    min = A[i];
                }
                temp -= A[i];
                if (temp == 0)
                {
                    minpos = i;
                    break;
                }
            }

            if (min > 0 && (maxpos <= A.Length - 3 || minpos >= 2))
            {
                return postMaxSum;
            }

            return postMaxSum - min;

'공부하자 > Codility' 카테고리의 다른 글