온라인저지

[BOJ] 3041번: N-퍼즐

plzfday 2018. 7. 27. 01:03

https://www.acmicpc.net/problem/3041

원래 위치인 각각의 원래 위치는 ((square[i][j] - 'A') / 4, (square[i][j] - 'A') % 4)인데 맨해튼 거리로 흩어짐 정도를 구해야 하므로 찾아진 x, y의 값을 빼주는 것이다.

#include <cstdio>
inline int abs(int a) { return a < 0 ? -a : a; }
char square[4][4];
int main()
{
    for (int i = 0; i < 4; ++i)
        scanf("%s", square[i]);
    int ret = 0;
    for (int i = 0; i < 4; ++i)
        for (int j = 0; j < 4; ++j)
            if (square[i][j] != '.')
                ret += (abs((square[i][j] - 'A') / 4 - i) + abs((square[i][j] - 'A') % 4 - j));
    printf("%d\n", ret);
    return 0;
}