알고리즘 문제풀기/인프런 강의 정답
48. 각 행의 평균과 가장 가까운 값(2차원 배열 탐색) [정렬 & 이분탐색(결정알고리즘) & 투포인트 알고리즘 & 스택]
코다람쥐
2022. 4. 19. 11:13
나의정답.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int MyRound(float num) {
num *= 10;
if ((int)num % 10 >= 5)
num += 10;
return num /= 10;
}
int main(int argc, char** argv) {
//freopen("input.txt", "rt", stdin);
int nstWNum, sub, min, avg, tmp;
float sum = 0;
int** arr = new int* [9];
for (int i = 0; i < 9; i++) {
arr[i] = new int[9];
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
scanf("%d", &arr[i][j]);
}
}
for (int i = 0; i < 9; i++) {
min = 2140000;
sum = 0;
for (int j = 0; j < 9; j++) {
sum += arr[i][j];
}
avg = MyRound(sum / 9);
for (int j = 0; j < 9; j++) {
sub = avg - arr[i][j];
if (sub < 0) sub *= -1;
if (min > sub) {
nstWNum = arr[i][j];
min = sub;
}
else if (min == sub) {
if (nstWNum < arr[i][j]) {
nstWNum = arr[i][j];
}
}
}
printf("%d %d\n", avg, nstWNum);
}
for (int i = 0; i < 9; i++) {
delete[] arr[i];
}
delete[] arr;
}