C++:: 프로그래머스 < 우박수열 정적분 >

jahlee·2023년 4월 28일
0

프로그래머스_Lv.2

목록 보기
42/106
post-thumbnail

단순히 우박수열을 구현한 벡터를 들고 범위에서의 넓이를 구해주면 되는 문제이다.

#include <string>
#include <vector>
using namespace std;

vector<double> solution(int k, vector<vector<int>> ranges)
{
    vector<double> answer;
    vector<pair<int,int>> v;//우박수열 그래프 벡터{인덱스, 수열 값}
    v.push_back({0,k});
    for(int i=1;k!=1;i++)
    {// 우박수열 구하는 부분
        if(k%2) k = 3*k +1;
        else k /=2;
        v.push_back({i, k});
    }
    for(auto c : ranges)
    {
        int s = c[0], e = v.size()-1+c[1];//시작 끝 인덱스 설정
        double res = 0;
        for(int i=s;i<e;i++)//넓이 구하는 부분
            res += (double)(v[i].second+v[i+1].second)/2;
        if (s>e) answer.push_back(-1.0);//시작 이 끝보다 크다면
        else answer.push_back(res);
    }
    return answer;
}

0개의 댓글