매직스퀘어
시간 제한1초메모리 제한512 MB
N x N 행렬이 주어질 때 모든 행, 열, 두 대각선의 합이 같고 1부터 N^2까지의 수가 한 번씩 쓰였는지 판정한다.
문제
수학에서 행렬은 수나 기호, 수식을 네모꼴로 배열한 것이다. 가로줄을 행, 세로줄을 열이라고 한다. 행의 개수와 열의 개수가 같은 행렬을 정방행렬이라고 한다.
매직스퀘어는 다음 두 성질을 만족하는 정방행렬이다.
- 원소는 부터 까지의 정수이고, 중복되는 수가 없이 모두 달라야 한다.
- 각 행의 합, 각 열의 합, 두 대각선(왼쪽 위에서 오른쪽 아래, 오른쪽 위에서 왼쪽 아래)의 합이 모두 같다. 이 합은 이다.
즉 이면 합은 , 이면 합은 , 이면 합은 이다. 인 매직스퀘어는 존재하지 않는다.
정방행렬을 입력받아 그 행렬이 매직스퀘어인지 판정하는 프로그램을 작성하시오.
입력
첫째 줄에 정방행렬의 크기 이 주어진다. ()
둘째 줄부터 개의 줄에 각 줄마다 개의 정수가 공백으로 구분되어 주어진다. 각 정수는 이상 이하이다.
출력
주어진 정방행렬이 매직스퀘어이면 TRUE를, 아니면 FALSE를 출력한다.