[Programmers] Level2 : 연속 부분 수열 합의 개수
Question
Solution
- elements의 각 요소에 대하여 1 ~ size 각각의 길이에 대한 합을 구한다.
- 중복되는 수는 제거 할 것이기 때문에 구해진 합을 set에 저장한다.
- 끝이 이어진 것처럼 하기 위해선 ‘idx % size’를 하면 된다.
Cord
#include <string>
#include <vector>
#include <unordered_set>
using namespace std;
int solution(vector<int> elements)
{
int answer = 0;
int size = elements.size();
unordered_set<int> res;
// i 부터 길이가 각각 1 ~ size 일때의 합 구하기
for (int i = 0; i < size; ++i)
{
int sum = 0;
for (int j = i; j < size + i; ++j)
{
// (idx % size) 하면 끝이 이어진 것 처럼 인접한 다음 수를 알 수 있다.
sum += elements[j % size];
res.insert(sum);
}
}
return answer = res.size();
}