Algorithm/프로그래머스

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

Carroti 2022. 11. 12. 12:20

 

문제

 

프로그래머스

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

programmers.co.kr

 

알고리즘

해시셋

 

풀이

elements의 각 원소를 시작으로 elements의 원소 개수만큼 누적하며 그 값을 해시셋에 삽입한다.

해시셋은 중복을 허용하지 않기 때문에 탐색이 끝난 후 해시셋의 원소 개수가 답이 된다.

 

* 인덱스를 elements의 원소 개수로 나머지 연산해 범위를 벗어나지 않게 한다.

 

코드

import java.util.*;

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