[HackerRank] Forming a Magic Square
출처 : https://www.hackerrank.com/challenges/magic-square-forming/problem
#include <bits/stdc++.h>
using namespace std;
int MS[8][3][3] = {{ 2,9,4,7,5,3,6,1,8 },
{ 4,3,8,9,5,1,2,7,6 },
{ 4,9,2,3,5,7,8,1,6 },
{ 8,3,4,1,5,9,6,7,2 },
{ 8,1,6,3,5,7,4,9,2 },
{ 2,7,6,9,5,1,4,3,8 },
{ 6,1,8,7,5,3,2,9,4 },
{ 6,7,2,1,5,9,8,3,4 }};
int formingMagicSquare(vector<vector<int>> s) {
int ans = 9999, cnt=0;
for (int m = 0; m < 8; m++) {
cnt = 0;
for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) cnt += abs(s[i][j] - MS[m][i][j]);
ans = min(ans, cnt);
}
return ans;
}
int main()
{
ofstream fout(getenv("OUTPUT_PATH"));
vector<vector<int>> s(3);
for (int i = 0; i < 3; i++) {
s[i].resize(3);
for (int j = 0; j < 3; j++) {
cin >> s[i][j];
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
int result = formingMagicSquare(s);
fout << result << "\n";
fout.close();
return 0;
}