어흥

[프로그래머스] 연속 부분 수열 합의 개수 (C++) 본문

알고리즘/프로그래머스

[프로그래머스] 연속 부분 수열 합의 개수 (C++)

라이언납시오 2023. 8. 27. 16:33
728x90
반응형

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131701

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 주의할 점

- 어떤 방식으로 1~배열의 길이 만큼의 원소를 더해서 중복을 제거할지 생각한다

 

2. 구현

- Set을 통해 중복을 제거하고 Set에는 연속된 부분 수열의 합을 넣는다

- N <= 1000이므로 N^2을 통해 진행해도 1초내에 들어온다고 판단

- Mod 연산을 통해 원형 수열에서 원소를 뽑아오는것 처럼 구현

#include <string>
#include <vector>
#include <set>
#include <math.h>
#include <iostream>
using namespace std;

int solution(vector<int> elements) {
    set<int> s;
    int len = elements.size();
    
    for(int i=0;i<len;i++){
        int sum = 0;
        for(int j=i;j<i+len;j++){
            sum+=elements[j%len];
            s.insert(sum);
        }
    }
    
    return s.size();
}
728x90
반응형
Comments