알고리즘/codewars

codewars: Equal Sides Of An Array

꾸준함. 2018. 1. 28. 21:06

문제 링크입니다: https://www.codewars.com/kata/5679aa472b8f57fb8c000047/train/cpp


/*

배열이 다음과 같이 주어졌다고 하자 {1, 2, 3, 4, 3, 2, 1};

3번째 index를 기준으로 왼쪽과 오른쪽의 합이 6으로 같기 때문에

당신의 함수는 3을 반환해야한다.

다른 예시로는 {1, 100, 50, -51, 1, 1};이 있다.

1번째 index를 기준으로 왼쪽과 오른쪽의 합이 1로 같기 때문에

당신의 함수는 1을 반환해야한다.

*/

#include <vector>

#include <iostream>

using namespace std;

 

//배열이 정렬이 되어있다면 binary search로 풀었겠지만

//정렬을 할 수 없기 떄문에 무식하게 풀었다.

int find_even_index(const vector<int> numbers)

{

        for (int i = 0; i < numbers.size(); i++)

        {

               int leftSum = 0, rightSum = 0;

               if (i == 0)

                       leftSum = 0;

               for (int j = 0; j < i; j++)

                       leftSum += numbers[j];

               for (int j = i+1; j < numbers.size(); j++)

                       rightSum += numbers[j];

               if (leftSum == rightSum)

                       return i;

        }

        return -1;

}

 

int main(void)

{

        vector<int> numbers1 = { 1, 2, 3, 4, 3, 2, 1 };

        vector<int> numbers2 = { 1, 100, 50, -51, 1, 1 };

        vector<int> numbers3 = { 20, 10, 30, 10, 10, 15, 35 };

        vector<int> numbers4 = { 20, 10, -80, 10, 10, 15, 35 };

        vector<int> numbers5 = { 10, -80, 10, 10, 15, 35, 20 };

        cout << find_even_index(numbers1) << endl;

        cout << find_even_index(numbers2) << endl;

        cout << find_even_index(numbers3) << endl;

        cout << find_even_index(numbers4) << endl;

        cout << find_even_index(numbers5) << endl;

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > codewars' 카테고리의 다른 글

codewars: Build a pile of Cubes  (0) 2018.01.29
codewars: Fibonacci, Tribonacci and friends  (0) 2018.01.29
codewars: Consecutive strings  (0) 2018.01.29
codewars: A Rule of Divisibility by 13  (0) 2018.01.29
codewars: Playing with digits  (0) 2018.01.28