알고리즘

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

박카스마시며코딩 2022. 10. 17. 21:34

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

 

프로그래머스

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

programmers.co.kr

 

저는 브루트포스를 통해 문제를 해결하였습니다.

저는 Set을 통해 각각의 합을 저장해 중복이 없도록 개수를 카운팅하였습니다.

저는 시작 인덱스를 시작으로 elements의 길이만큼 합을 구하고 이를 set에 넣었습니다.

만약 인덱스가 길이를 넘어가면 0으로 가도록 하여 해결하였습니다.

 

import java.util.*;

class Solution {
    public int solution(int[] elements) {
        int answer = 0;
        Set<Integer> num = new HashSet<>();
        int size = elements.length;
        for(int length = 1 ; length <= size ; length++){
            for(int start = 0 ; start < size ; start++){
                int sum = 0;
                int index = start;
                for(int i = 0 ; i < length ; i++){
                    sum += elements[index];
                    index++;
                    if(index >= size){
                        index = 0;
                    }
                }
                num.add(sum);
            }
        }
        answer = num.size();
        return answer;
    }
}