#include <stdio.h>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
int sum, mid, val = 0, min = 2147000000, temp;
vector<int> row(9, 0);
vector<vector<int>> num(9, row);
for (int i = 0; i < num.size(); i++)
{
for (int j = 0; j < row.size(); j++)
{
scanf(" %d", &row[j]);
}
num[i] = row;
}
for (int i = 0; i < num.size(); i++)
{
sum = 0;
for (int j = 0; j < row.size(); j++)
{
sum += num[i][j];
}
mid = sum / 9.0 + 0.5;
for (int j = 0; j < row.size(); j++)
{
temp = abs(mid - num[i][j]);
if (min >= temp)
{
if(min == temp)
{
if(val < num[i][j])
val = num[i][j];
}
else
{
min = temp;
val = num[i][j];
}
}
}
printf("%d %d\n", mid, val);
val = 0;
min = 21470000;
}
return 0;
}
1. 평균값을 구하기 위해 총 합 변수 sum, 평균값 mid, 평균과 가장 가까운 값 val, 평균과의 가장 적은 차이 min, 평균과의 차이 temp 를 선언한다.
2. 9 * 9 배열이기 때문에 9 크기의 vector 를 선언하고 0으로 초기화 한 뒤 2차원 vector를 초기화한다.
3. mid는 정수형 변수이기 때문에 sum / 9 를 하게 되면 소수점 부분이 소실되고 정수 부분만 남아 반올림을 할 수 없게 된다. 이에 sum / 9.0 을 해주어 실수형 변수로 전환한 뒤 0.5를 더하고(반올림) 정수형으로 다시 변환해준다.
4. cmath 라이브러리의 round() 를 이용할 수도 있다.