[프로그래머스-레벨2]연속 부분 수열 합의 개수 - Java

iamjinseo·2024년 4월 19일
0

문제풀이-Java

목록 보기
52/53


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


문제 생략

풀이

import java.util.*;
class Solution {
    public int solution(int[] elements) {
        HashSet<Integer> res = new HashSet<>();
        // 슬라이딩 윈도우
        for(int i=1; i<=elements.length; i++){
            int start = 0;
            int end = start+i;
            int sum = 0;
            
            for(int j=start; j<end; j++) // 0~end 전까지의 합 일단 구하기
                sum += elements[j];

            while(start<elements.length){ // start빼고 end더하기.
                res.add(sum);
                if(i==elements.length) // 모든 수를 더할 땐 슬라이딩윈도우 필요X
                    break;
                sum -= elements[start++];
                sum += elements[end];
                end = (end+1)%elements.length;
            }
        }
        return res.size();
    }
}

슬라이딩 윈도우를 이용한 문제. 그렇게 어렵지 않았다.
조금 다른 점은 합의 개수를 구하는 것이므로 Set을 이용해 중복을 방지하고 빠르게 계산할 수 있다.

후기


profile
일단 뭐라도 해보는 중

0개의 댓글