문제 링크입니다: 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 |