본문 바로가기

프로그래머스

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

📚 연속 부분 수열 합의 개수

[JAVA] 프로그래머스 Level 2.

코딩테스트 연습 - 연속 부분 수열 합의 개수 | 프로그래머스 스쿨 (programmers.co.kr)

문제 설명

(생략)

제한사항

  • 3 ≤ elements의 길이 ≤ 1,000
  • 1 ≤ elements의 원소 ≤ 1,000

입출력 예

 

elements  result
[7,9,1,1,4] 18

문제 해결 방안

1부터 문자열의 길이만큼 값을 잘라와서 합을 구한다.

합은 중복이 없어야하며 그 수를 구한다.

소스 코드

import java.util.*;
class Solution {
    public int solution(int[] elements) {
        int s = elements.length;
        Set<Integer> set = new HashSet<>();
        for(int i=1; i<=s; i++) {
            for(int x=0; x<s; x++) {
                int sum = 0;
                for(int y=0; y<i; y++) {
                    sum += elements[(x+y)%s];
                }
                set.add(sum);
            }
        }
        return set.size();
    }
}

이중 반복문이다보니 속도가 느리다...

하지만 해당 반복문없이 할 수가 없었다