programmers_연속 부분 수열 합의 개수_java

2023. 4. 5. 17:42Algorithm/Programmers

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/131701

 

프로그래머스

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

programmers.co.kr

import java.util.*;

class Solution {
    public int solution(int[] elements) {
        int answer = 0;
        
        int elementsLength = elements.length;
        
        answer = findSum(elements, elementsLength);
        
        return answer;
    }
    
    public int findSum(int[] elements, int elementsLength){
        Set<Integer> set = new HashSet<>(); // 중복 방지
        
        for(int subSequenceLength = 1; subSequenceLength<=elementsLength; subSequenceLength++){ // 부분 수열 길이 
            int left = 0;
            int right = 0;
            int sum = 0;
            
            for(int i = 0 ; i< subSequenceLength; i++){ // 초기 sum 값 설정
                sum+=elements[right];
                right = (right+1) % elementsLength;
            }
            set.add(sum);
            // System.out.println(left + " " + right + " " + sum);
            
           
            for(int i = 0; i<elementsLength; i++){ // 나머지 sum 구하기
                sum = sum + elements[right] - elements[left];
                left = (left+1) % elementsLength;
                right = (right+1) % elementsLength;
                set.add(sum);
            }
        }
        
       return set.size();
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

programmers_타겟 넘버_java  (0) 2023.04.06
programmers_[1차] 뉴스 클러스터링_java  (0) 2023.04.05
programmers_n^2 배열 자르기_java  (0) 2023.04.05
programmers_튜플_java  (0) 2023.04.04
programmers_행렬의 곱셈_java  (0) 2023.04.04