- 주어지는 k 값으로 콜라츠 추측 수행
- 이후 만들어지는 그래프에서 주어진 범위만큼 넓이를 구하면 됨
> 설명이 많긴한데 그냥 주어진 조건 수행 후 만들어지는 그래프에서 주어지는 각 범위마다 넓이를 구하면 됨
#include <string>
#include <vector>
using namespace std;
vector<double> solution(int k, vector<vector<int>> ranges) {
vector<double> answer;
vector<int> hail;
hail.push_back(k);
// 결과가 1보다 크면 작업 반복
while(k != 1) {
// 입력된 수가 짝수라면 2로 나눔
if(k % 2 == 0) k /= 2;
// 입력된 수가 홀수라면 3을 곱하고 1을 더함
else k = (k * 3) + 1;
// 각 작업마다 나오는 값 저장
hail.push_back(k);
}
for(int i = 0; i < ranges.size(); i++) {
// 주어진 범위의 시작점
int start = ranges[i][0];
// 주어진 범위의 끝점
int end = hail.size() - 1 + ranges[i][1];
double tmp = 0;
// 주어진 범위의 너비 계산
for(int j = start; j < end; j++)
tmp += (double)(hail[j] + hail[j + 1]) / 2;
// 시작점이 끝점보다 크다면 결과는 -1
if(start > end) answer.push_back(-1.0);
else answer.push_back(tmp);
}
return answer;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스/C++] 리코쳇 로봇 (0) | 2024.03.10 |
---|---|
[프로그래머스/C++] 행렬 테두리 회전하기 (0) | 2024.03.10 |
[프로그래머스/C++] 수식 최대화 (0) | 2024.03.10 |
[프로그래머스/C++] 마법의 엘리베이터 (0) | 2024.03.08 |
[프로그래머스/C++] 가장 큰 정사각형 찾기 (0) | 2024.03.08 |