이 문제에서는 각각 하나의 투자 계획을 나타내는 두 개의 배열이 주어집니다. 우리가 해야 할 일은 투자 위험을 평가하여 두 투자 중 어느 쪽이 더 유망한지 판단하는 것입니다.
두 투자 I1[][]과 I2[][]는 각각 '투자 결과(수익 금액)'와 '그 결과가 나타날 확률'의 집합으로 구성되어 있습니다.
이 값들을 바탕으로 각 투자의 위험도를 계산한 뒤, 두 투자 중 더 나은 투자를 출력하면 됩니다.
이를 위해 통계학의 개념을 활용하여 판단에 필요한 지표들을 구합니다.
계산해야 할 핵심 지표
- 투자의 평균(Mean): 투자 결과와 해당 확률의 곱을 모두 더한 값으로, 기대 수익 금액을 의미합니다.
- 수익 금액의 편차(Deviation): 각 결과가 평균으로부터 떨어진 정도로, 수익의 변동성을 나타냅니다.
그다음 아래 값을 계산합니다.
표준편차 ÷ 투자 평균
이 비율은 금융에서 '변동계수(Coefficient of Variation)'라고 불리며, 기대 수익 1원당 감수해야 하는 위험의 크기를 뜻합니다. 따라서 이 값이 더 작은 투자가 기대 수익 대비 변동성이 적어 상대적으로 안정적이며, 최종 결과로 선택됩니다.
풀이 과정을 보여주는 예제 프로그램
예제
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
typedef pair<float, float> Data;
typedef vector<Data> Vector;
// (결과 × 확률)의 총합
float totalProdProbOutcome(const Vector &v) {
float sum = 0;
for (auto i : v)
sum += i.first * i.second;
return sum;
}
// 확률의 총합
float totalProb(const Vector &v) {
float sum = 0.0f;
for (auto i : v)
sum += i.second;
return sum;
}
// 평균(기대값) 계산
float CalcMeanVal(const Vector &v) {
return totalProdProbOutcome(v) / totalProb(v);
}
// 표준편차 계산
float calcStdDevi(const Vector &v) {
float mean = CalcMeanVal(v);
float sum = 0;
for (auto i : v)
sum += (i.first - mean) * (i.first - mean) * i.second;
return sqrt(sum / totalProb(v));
}
int main() {
Vector A = { {450, 0.3f}, {250, 0.4f}, {100, 0.2f}, {300, 0.1f} };
Vector B = { {300, 0.2f}, {150, 0.5f}, {500, 0.3f} };
float meanA = CalcMeanVal(A);
float meanB = CalcMeanVal(B);
float sdA = calcStdDevi(A);
float sdB = calcStdDevi(B);
// 변동계수(SD / 평균)가 작은 투자가 더 유망
if ((sdA / meanA) < (sdB / meanB))
cout << "Investment A is better investment.\n";
else
cout << "Investment B is better investment.\n";
return 0;
}
출력 −
Investment A is better investment.
코드 동작 설명
- totalProdProbOutcome(): 모든 (결과 × 확률)의 합을 구합니다.
- totalProb(): 모든 확률의 합을 구합니다.
- CalcMeanVal(): 위 두 값을 나누어 투자의 평균, 즉 기대 수익을 계산합니다.
- calcStdDevi(): 각 결과와 평균의 차이를 제곱한 뒤 확률로 가중합하여 분산을 구하고, 여기에 제곱근을 취해 표준편차를 구합니다.
- main(): 두 투자의 변동계수(표준편차 ÷ 평균)를 비교하여 더 작은 쪽을 더 나은 투자로 출력합니다.
예제 계산 결과
예제 데이터를 직접 계산해 보면 다음과 같습니다.
- 투자 A: 평균 = 285, 표준편차 ≈ 124.6, 변동계수 ≈ 0.44
- 투자 B: 평균 = 285, 표준편차 ≈ 151.7, 변동계수 ≈ 0.53
두 투자의 기대 수익은 285로 동일하지만, 투자 A가 더 작은 변동계수를 가지므로 기대 수익 대비 위험이 낮습니다. 따라서 프로그램은 투자 A를 더 나은 투자로 출력합니다. 이처럼 단순히 기대 수익만이 아니라 그 수익을 얻기 위해 감수해야 하는 위험까지 함께 고려하는 것이 합리적인 투자 판단의 핵심입니다.