본문 바로가기

알고리즘/해커랭크

Forming a Magic Square

링크 : www.hackerrank.com/challenges/magic-square-forming/problem

 

Forming a Magic Square | HackerRank

Find the minimum cost of converting a 3 by 3 matrix into a magic square.

www.hackerrank.com

문제 이해하는데 좀 걸렸다. 잘못 푼걸 알았을때 discussion을 참고했다.

 

 

def formingMagicSquare(s):
    magick_squers = [[[8,1,6],[3,5,7],[4,9,2]]
                     ,[[6,1,8],[7,5,3],[2,9,4]]
                     ,[[4,9,2],[3,5,7],[8,1,6]]
                     ,[[2,9,4],[7,5,3],[6,1,8]]
                     ,[[8,3,4],[1,5,9],[6,7,2]]
                     ,[[4,3,8],[9,5,1],[2,7,6]]
                     ,[[6,7,2],[1,5,9],[8,3,4]]
                     ,[[2,7,6],[9,5,1],[4,3,8]]]

    ans = sys.maxsize

    for magick_squre in magick_squers:
        cost = 0
        for i in range(3):
            for j in range(3):
                cost += abs(magick_squre[i][j] - s[i][j])
        ans = min(ans,cost)
    return ans