[프로그래머스] 절대 외부 IDE를 써선 안돼/Java

[lv2] 연속 부분 수열 합의 개수

SH3542 2024. 12. 8. 13:25

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

 

누적합으로 투 포인터에 쓰일 초기 값을 구해준다.

이후 투포인터로 탐색한다.

 

원형 배열이므로, 엔드 포인터가 배열의 끝에 닿으면 0으로 다시 바꿔준다.

 

(입력 값 범위가 작으므로, 일일히 더하는 단순 구현으로도 될 것 같다.)

import java.util.*;

class Solution {
    public int solution(int[] elements) {
        int answer = 0;
        int E = elements.length;

        Set<Integer> set = new HashSet<>();

        // 누적합 : 윈도우 초기 값
        int[] d = new int[E];

        d[0] = elements[0];

        for(int i=1; i<E; i++) {
            d[i] = d[i-1] + elements[i];
        }

        // 투 포인터
        for(int i=0; i<E; i++) {
            int st = 0;
            int ed = i + 1;
            int val = d[i];

            while(st < E) {

                if(ed == E)
                    ed = 0;

                set.add(val);
                val += elements[ed++] - elements[st++];
            }
        }

        return set.size();
    }
}

'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글

[lv2] 마법의 엘리베이터  (0) 2024.12.10
[lv2] 혼자서 하는 틱택토  (0) 2024.12.10
[lv2] 짝지어 제거하기  (0) 2024.12.08
[lv2] 2 x n 타일링  (0) 2024.12.06
[lv2] 귤 고르기  (1) 2024.12.06