기타/코딩테스트
(코테) 프로그래머스_연속 부분 수열 합의 개수
불광동 물주먹
2025. 6. 22. 22:24
import java.util.*;
class Solution {
public int solution(int[] elements) {
// 중복 없는 부분 수열 합을 저장할 Set
Set<Integer> set = new HashSet<>();
// size: 부분 수열의 길이 (1부터 elements.length까지)
for (int size = 1; size <= elements.length; size++) {
// start: 부분 수열 시작 위치 (0부터 n-1까지)
for (int start = 0; start < elements.length; start++) {
int sum = 0;
// 현재 시작점에서 size 길이만큼 순환하며 합 계산
for (int i = 0; i < size; i++) {
// 배열의 범위를 넘을 경우를 대비해 % 연산으로 순환 처리
sum += elements[(start + i) % elements.length];
}
// 해당 부분 수열의 합을 Set에 저장 (중복 자동 제거됨)
set.add(sum);
}
}
// 중복 제거된 모든 부분 수열의 합의 개수 반환
return set.size();
}
}