[프로그래머스] 연속 부분 수열 합의 개수 자바(Java)
본문 바로가기
알고리즘 풀이

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

by IYK2h 2023. 4. 5.
728x90

풀이

  • 원순열 특징 사용
  • {4,7,9,1,1} -> {4,7,9,1,1,4,7,9,1} 배열 늘리기
  • 자기 자신부터, 원소의 길이만큼 더하기

코드

import java.util.*;
import java.util.stream.*;

class Solution {
    public int solution(int[] elements) {
        int[] newElements = new int[elements.length * 2];
        
        
        // {4,7,9,1,1} -> {4,7,9,1,1,4,7,9,1}
        for(int i = 0; i < elements.length; i++) {
            newElements[i] = newElements[i + elements.length] = elements[i];
        }
        
        Set<Integer> set = new HashSet<>();
        
        for (int i = 0; i < elements.length; i++) {
            int sum = 0;
            // 자기 자신부터, 원소의 길이만큼 더하기
            for (int k = i; k < i + elements.length; k++) {
                sum += newElements[k];
                set.add(sum);
            }
        }
        
        return set.size();
    }
}
728x90

댓글