관리 메뉴

fatalite

프로그래머스 우박 수열 정적분 본문

코딩 인터뷰/C++

프로그래머스 우박 수열 정적분

fataliteforu 2024. 10. 9. 11:50

vector.size()의 리턴 값은 unsigned다.....

segmentation fault나서 헤매었다

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

vector<int> GetIce(int first)
{
    int k = first;
    vector<int> IceArr;
    while(k != 1)
    {
        IceArr.push_back(k);
        if(k % 2 == 0)
        {
            k = k / 2;
        }
        else
        {
            k = k * 3 + 1;
        }
    }
    IceArr.push_back(1);
    return IceArr;
}

vector<double> solution(int k, vector<vector<int>> ranges) {
    vector<double> answer;
    
    vector<int> IceArr = GetIce(k);
    for(vector<int> v : ranges)
    {
        double sum = 0;
        int length = IceArr.size();
        if((v[0] <= length + v[1] - 1))
        {
            for(int i = v[0]; i < (length + v[1] - 1); i++)
            {
                 double HighY = IceArr[i] > IceArr[i+1] ? IceArr[i] : IceArr[i+1];
                 double  LowY = IceArr[i] < IceArr[i+1] ? IceArr[i] : IceArr[i+1];
                 sum += (LowY + (HighY - LowY) / 2);
            }
            answer.push_back(sum);
        }
        else 
        {
            answer.push_back(-1);
        }
        
    }
    
    return answer;
}