[c++/프로그래머스] 연속 부분 수열 합의 개수

조히·2023년 2월 23일
0

PS

목록 보기
30/82

문제 링크

연속 부분 수열 합의 개수

풀이

set을 이용하는 문제

  1. 부분 수열의 길이를 1부터 elements.size()까지
  2. 각 원소의 인덱스부터 len 길이 만큼 각 원소의 합을 구해 set에 넣어준다.
    2-1. 만약 인덱스가 element.size()를 넘어간다면 원형 수열이기 때문에 -elements.size()를 해준다.
  3. set의 크기 리턴

코드

#include <string>
#include <vector>
#include <set>

using namespace std;

vector<int> elements;
set<int> s;

void sumVector(int len)
{
    for(int i=0;i<elements.size();i++)
    {
        int sum = 0;
        for(int j=i;j<i+len;j++)
        {
            if(j>=elements.size()) sum += elements[j-elements.size()];
            else sum += elements[j];
        }
        s.insert(sum);
    }
}

int solution(vector<int> elements) {
    int answer = 0;
    
    ::elements = elements;
    
    int len = 1;
    while(len<=elements.size())
    {
        sumVector(len);
        len++;
    }
    
    answer = s.size();
    
    return answer;
}
profile
Juhee Kim | Game Client Developer

0개의 댓글