아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

매직 스퀘어

시간 제한2초메모리 제한1024 MB

요약
빈 칸에 1부터 N의 제곱까지 남은 숫자를 채워 모든 행과 열, 두 대각선의 합이 같아지는지 판단합니다.
난이도

보통10점 중 7점

유형
백트래킹, 완전 탐색, 수학
정답자
아직 제출이 없습니다

문제

매직 스퀘어는 다음 세 조건을 만족하는 N×NN \times N 행렬이다.

  1. 각 칸의 값은 11 이상 N2N^2 이하의 정수이다.
  2. 모든 칸의 값이 서로 다르다.
  3. NN개 행의 합, NN개 열의 합, 두 대각선의 합이 모두 같다.

다음 3×33 \times 3 행렬은 매직 스퀘어이다.

834
159
672

행의 합은 8+3+4, 1+5+9, 6+7+2이고, 열의 합은 8+1+6, 3+5+7, 4+9+2이며, 두 대각선의 합은 8+5+2, 4+5+6이다. 이 여덟 개의 합이 모두 15로 같다.

일부 칸만 채워진 N×NN \times N 행렬이 주어진다. 빈 칸을 알맞게 채워 매직 스퀘어를 만들 수 있는지 판정하라.

입력

첫째 줄에 행렬의 크기 NN (2≤N≤52 \le N \le 5)과 이미 채워진 칸의 개수 EE (0≤E≤N20 \le E \le N^2)가 공백을 사이에 두고 주어진다.

다음 EE개 줄에는 채워진 칸 하나의 행 번호 RR (1≤R≤N1 \le R \le N), 열 번호 CC (1≤C≤N1 \le C \le N), 값 VV (1≤V≤N21 \le V \le N^2)가 공백을 사이에 두고 주어진다. VV는 모두 서로 다르다.

출력

주어진 행렬을 매직 스퀘어로 완성할 수 있으면 yes를, 완성할 수 없으면 no를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5 7
    1 4 24
    4 2 10
    5 5 11
    2 3 8
    3 2 9
    1 2 1
    4 3 21
    
    예상 출력
    yes