

원형 수열이기 때문에 배열을 2번 반복하여야 한다.
배열을 2번 반복한 것을 새로운 배열에 저장한다.
배열의 사이즈만큼 반복문을 실행한다.
number를 1부터 number가 배열 사이즈가 되기 전까지 반복문을 실행한다.
elements[i:number+i]까지의 합계를 구한다.
구한 합계들을 sums라는 list에 저장한다.
list에서 중복을 제거한 후 list의 크기를 반환한다.
import java.util.*;
import java.util.stream.*;
class Solution {
public int solution(int[] elements) {
int answer = 0;
List<Integer> sums = new ArrayList<>();
int size = elements.length;
int[] repeatedElements = IntStream.concat(Arrays.stream(elements), Arrays.stream(elements)).toArray();
for (int i = 0; i < size; i ++) {
for (int num = 1; num <= size; num ++) {
int[] subElements = Arrays.copyOfRange(repeatedElements, i, num+i);
sums.add(Arrays.stream(subElements).sum());
}
}
sums = sums.stream().distinct().collect(Collectors.toList());
return sums.size();
}
}
