[프로그래머스(Programmers)][Java,Python] (Lv2) 연속 부분 수열 합의 개수

728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/131701?language=java

 

프로그래머스

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

programmers.co.kr

 

1. Java

import java.util.*;
class Solution {
    public int solution(int[] elements) {
        int answer = 0;
        int n = elements.length;
        Set<Integer> set = new HashSet<>();
        int sum = 0;
        for ( int i = 0; i < n; ++i ) {
            sum = elements[i];
            set.add(sum);
            for ( int j = i + 1; j < i + n; ++j ) {
                sum += elements[j % n];
                set.add(sum);
            }
        }
        answer = set.size();
        return answer;
    }
}
더보기
import java.util.*;
class Solution {
    public int solution(int[] elements) {
        int answer = 0;
        int n = elements.length;
        Set<Integer> set = new HashSet<>();
        int sum = 0;
        for ( int i = 0; i < n; ++i ) {
            int e = elements[i];
            sum += e;
            set.add(e);
        }
        set.add(sum);
        for ( int i = 0; i < n; ++i ) {
            for ( int j = 2; j < n; ++j ) {
                sum = 0;
                for ( int k = i; k < i + j; ++k ) {
                    sum += elements[k % n];
                }
                set.add(sum);
            }
        }
        answer = set.size();
        return answer;
    }
}

 

2. Python

def solution(elements):
    answer = 0
    n = len(elements)
    s = set()
    sum = 0
    for i in range(n) :
        sum = elements[i]
        s.add(sum)
        for j in range(i + 1, i + n) :
            sum += elements[j % n]
            s.add(sum)
    answer = len(s)
    return answer

 

반응형