알고리즘/기타

[HackerRank] Forming a Magic Square

히더 2018. 9. 30. 15:53

출처 : 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;

}