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

AMUD·2023년 6월 5일
0

Algorithm

목록 보기
59/78

문제


문제링크

접근

  • 처음에는 이전처럼 getNextIdx() 메서드를 만들어서, 끝값을 분기했었는데 너무 잦은 메서드 호출이 걱정되었다.
  • 어차피 중복 값은 취급하면 안되기 때문에 배열에서 임시로 같은 배열을 뒤에 붙이면 모든 경우의 수를 다룰 수 있다.

풀이

import java.util.*;

class Solution {
    public int solution(int[] elements) {
        int size = elements.length;
        int[] nums = new int[size * 2];
        int[] sums = new int[size * 2];
        System.arraycopy(elements, 0, nums, 0, size);
        System.arraycopy(elements, 0, nums, size, size);
        
        Set<Integer> results = new HashSet<>();
        
        int sum = 0;
        for (int i = 0; i < size * 2; i++) {
            sum += nums[i];
            sums[i] = sum;
        }
        
        for (int i = 1; i <= size; i++) {
            for (int j = 0; j < size; j++) {
                results.add(sums[j+i] - sums[j]);
            }
        }
        
        return results.size();
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글