Make Unreal REAL.
article thumbnail
Level 2. 우박수열 정적분

 

 

설명을 잘 따라가면 지문 길이에 비해 어려운 문제는 문제는 아니었다.

 

이 그래프는 각 구간에서는 1차 함수이므로, 정적분한 넓이가 (b - a) * (f(b) + f(a)) / 2라는 걸 알고 있다면 쉽게 풀 수 있는 문제였다.

 

#include <iostream>
#include <vector>
#include <set>

using namespace std;

vector<int> get_collatz(int n)
{
    vector<int> v;

    while (n != 1)
    {
        v.emplace_back(n);

        if (n & 1) n += n + n + 1;
        else       n >>= 1;
    }

    v.emplace_back(1);

    return v;
}

vector<double> solution(int k, vector<vector<int>> ranges)
{
    vector<double> answer;
    vector<int> collatz = get_collatz(k);

    for (vector<int>& range : ranges)
    {
        int s = range[0];
        int e = collatz.size() + range[1] - 1;

        if (e < s)
        {
            answer.emplace_back(-1);
            continue;
        }

        double integral = 0;

        for (int i = s; i < e; ++i)
            integral += (collatz[i] + collatz[i + 1]) * 0.5;

        answer.emplace_back(integral);
    }

    return answer;
}

'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글

Level 0. 원소들의 곱과 합  (0) 2023.07.10
Level 2. [3차] 방금그곡  (0) 2023.07.09
Level 2. 괄호 변환  (0) 2023.07.07
Level 0. 배열의 원소 삭제하기  (0) 2023.07.06
Level 0. 주사위 게임 2  (0) 2023.07.05
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그