문제 링크
연속부분 수열 합의 개수
풀이
- 주어진 배열을 두 배로 우선 늘린다. 그래야 아웃 오브 인덱스 익셉션 안나지..
- 처음에는 중복 for문으로 생각했다가 잘 안풀려서 투 포인터 알고리즘을 쓰는건가 싶었다.
- 근데 그냥 중복 for 문으로 풀면 되더라.. 성능이 이상하게 나오지만;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.IntStream;
class Solution {
public int solution(int[] elements) {
Set<Integer> answerSet = new HashSet<>();
int[] doubleElements = new int[elements.length * 2];
IntStream.range(0, elements.length).forEach(i -> {
doubleElements[i] = elements[i];
doubleElements[elements.length + i] = elements[i];
});
for (int i = 1; i <= elements.length; i++) {
for (int j = 0; j < elements.length; j++) {
answerSet.add(Arrays.stream(doubleElements, j, j + i).sum());
}
}
return answerSet.size();
}
}
후기
- Arrays.stream에서 범위를 쥐어줄 수 있다는 것을 처음 알았다.