프로그래밍/Algorithm

[프로그래머스] 연속 부분 수열 합의 개수

일단개그하다 2022. 11. 15. 00:16

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131701

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

접근 방법 및 풀이

1개부터 최대 배열의 길이 만큼을 선택하여 더한 값을 중복을 제거한 값의 수를 반환

 

원형 수열이라 표현 했으므로 문제의 예시의 배열인 [7,9,1,1,4]인 경우에 연속된 3개의 수를 선택하는 상황에서 index가 4인 4와 index가 0인 7과 index가 1인 9의 합도 고려

import java.util.HashSet;
import java.util.Set;

public class Q30_131701 {
    public int solution(int[] elements) {

        Set<Integer> set = new HashSet<>();
        int length = elements.length;
        for (int size = 1; size <= length; size++) {
            for (int i = 0; i < length; i++) {
                int sum = 0;
                for (int j = 0; j < size; j++) {
                    int index = (i + j) % length;
                    sum += elements[index];
                }
                set.add(sum);
            }
        }

        return set.size();
    }
}