기타/코딩테스트

(코테) 프로그래머스_연속 부분 수열 합의 개수

불광동 물주먹 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();
    }
}