알고리즘 문제풀기/인프런 강의 정답

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;
	
}