Coding Test/JAVA 코딩테스트 풀이정리(프로그래머스)

프로그래머스 스쿨(Java - Lv.2) - 연속 부분 수열 합[윈도우 슬라이드]
깝몬 2025. 2. 24. 22:37

문제

 

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

해답

 

import java.util.*;

class Solution {
    public int solution(int[] elements) {
        Set<Integer> set = new HashSet<>();
        int[] rounded = new int[elements.length*2];
        for(int i=0;i<elements.length*2;i++){
            rounded[i] = elements[i%elements.length];
        }
        for(int i=0;i<elements.length;i++){
            int sum =0;
            for(int j=0;j<elements.length;j++){
                sum+=rounded[i+j];
                set.add(sum);
            }
        }
        return set.size();
    }
}

 

 

해설

 

문제를 보면 일일이 다 덧셈을 해서 처리해야할것같으나

 

중복제거에서 Set를 떠올리고, 윈도우 슬라이드를 이용해 첫번째 자리부터 자기자신에 돌아올때까지 1개씩 늘려가면서 덧셈을 하여 set에 add를 해주면 간단히 풀수 있는 문제다.

 

레벨2에서 윈도우 슬라이드를 강조하는것이 보이는 문제였다.