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

유병수·2023년 5월 1일
0

부분 수열의 합의 종류를 구하는 문제.
중복된 합이 있을 수 있으므로 set을 사용해 중복함수를 삭제해줬다.
시작값부터 하나씩 대해주면서 set에 넣었고 한바퀴를 다 돌면 start 위치를 다음으로 넘겨서 더해줬다. 그러면 길이가 1인 부분수열부터 길이가 n인 부분수열 합까지 만들어져서 set에 들어가게 된다. 순환 구조 같은 경우에는 % 연산자를 사용해 나머지를 이용하면 쉽게 더할 수 있다.

import java.util.*;

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

0개의 댓글