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

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

체스 퍼즐

면접 대비

시간 제한1초메모리 제한128 MB

요약
각 체스판에서 룩의 좌표를 읽고, 같은 행이나 열을 공유하는 룩이 없으면 SAFE, 있으면 NOT SAFE를 출력한다.
난이도

쉬움10점 중 2점

유형
구현, 해시맵, 완전 탐색, 배열
정답자
아직 제출이 없습니다

문제

체스판 위에 여러 개의 룩(rook)을 놓으려고 합니다. 룩은 자신이 있는 행과 열을 따라 움직이므로, 어떤 두 룩도 서로를 위협하지 않으려면 두 룩이 같은 행이나 같은 열에 있어서는 안 됩니다.

주어진 룩 배치에서 서로를 위협하는 룩이 하나라도 있는지 판정하는 프로그램을 작성하세요.

입력

체스판은 8×88 \times 8 크기이며, 각 칸의 위치는 (1,1)(1,1)부터 (8,8)(8,8)까지입니다.

첫째 줄에 체스판의 개수 TT가 주어집니다.

이어지는 각 줄은 하나의 체스판을 나타냅니다. 각 줄은 먼저 룩의 개수 kk로 시작하고, 그 뒤에 각 룩의 열(column)과 행(row) 위치가 순서대로 주어집니다. 즉 한 줄은 kk개의 (열, 행) 쌍, 곧 2k2k개의 정수로 이루어집니다.

출력

각 체스판에 대해, 서로를 위협하는 룩이 하나도 없으면 SAFE를, 하나라도 있으면 NOT SAFE를 한 줄에 출력합니다.

예제3

  1. 예제 1

    입력
    2
    3 1 1 2 6 8 8
    2 2 3 1 3
    
    예상 출력
    SAFE
    NOT SAFE
    
  2. 예제 2

    입력
    1
    1 4 4
    
    예상 출력
    SAFE
    
  3. 예제 3

    입력
    1
    2 5 1 5 8
    
    예상 출력
    NOT SAFE