-
프로그래머스 - 우박수열 정적분 [C++]문제 풀이/프로그래머스 2024. 1. 16. 12:15반응형
이 문제는 수학을 이용해서 푸는 문제이다.
콜라츠 추측에 대한 정보가 주어지는데 이는 그대로 구현하면 된다.
범위에 대한 설명이 헷갈렸는데, [a, -b]에 대해서 [a, 콜라츠 추측 루프 횟수 - b] 로 정의하는 것만 조심하면 된다.
정적분에 대해서는 루프를 돌면서 사다리꼴의 넓이를 구해주는 방식으로 구했다.
#include <string> #include <vector> #include <iostream> using namespace std; vector<int> collatz(int number) { vector<int> results(1, number); while (number != 1) { if (number % 2 == 0) { number /= 2; } else { number = number * 3 + 1; } results.push_back(number); } return results; } vector<double> solution(int k, vector<vector<int>> ranges) { vector<double> answer; vector<int> collatzNumbers = collatz(k); for (vector<int>& range : ranges) { int a = range[0]; int b = range[1]; b += collatzNumbers.size() - 1; if (a == b) { answer.push_back((double)0); } else if (a > b) { answer.push_back((double)-1); } else { double results = 0; for (int i = a + 1; i <= b; i++) { int prev = collatzNumbers[i - 1]; int present = collatzNumbers[i]; results += (prev + present) / 2.0; } answer.push_back(results); } } return answer; }
반응형'문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 혼자 놀기의 달인 [C++] (0) 2024.01.17 프로그래머스 - 두 원 사이의 정수 쌍 [C++] (0) 2024.01.17 프로그래머스 - 광물 캐기 [C++] (0) 2024.01.15 프로그래머스 - 디펜스 게임 [C++] (0) 2024.01.14 프로그래머스 - 리코쳇 로봇 [C++] (1) 2024.01.13