삼각 N-Queen

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

요약
삼각형 체스판에서 서로 공격하지 않는 퀸을 floor((2N+1)/3)개만큼 배치하는 최적 배치와 그 개수를 N마다 출력해야 합니다.
난이도

어려움10점 중 8점

유형
조합론, 수학, 그리디
정답자
아직 제출이 없습니다

문제

한 변에 N칸이 있는 삼각형 모양의 체스판이 있다. 위에서부터 행 번호를 1부터 N까지 붙이고, i번째 행에는 왼쪽부터 열 번호 1부터 i까지 붙은 i개의 칸이 있다.

퀸은 자신이 놓인 칸을 지나는 세 방향의 줄, 즉 삼각형의 세 변과 각각 평행한 줄에 있는 모든 칸을 공격한다. 이 좌표계에서는 두 퀸이 같은 행에 있거나, 같은 열에 있거나, 행 번호와 열 번호의 차가 같으면 서로 공격한다.

삼각 N-Queen 문제는 한 변에 N칸이 있는 삼각형 체스판에 서로 공격하지 않도록 가능한 한 많은 퀸을 배치하는 것이다. 한 변의 칸 수가 N이면 항상 floor((2*N+1)/3)개의 퀸을 서로 공격하지 않게 배치할 수 있다.

N이 주어졌을 때, 서로 공격하지 않는 퀸의 최대 개수와 그 배치를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 C(1 <= C <= 1000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며 정수 N(1 <= N <= 1000)을 포함한다.

출력

각 테스트 케이스마다 첫 줄에 놓을 수 있는 퀸의 최대 개수를 출력한다. 이어지는 N개 이하의 줄에는 실제로 놓는 퀸들의 위치를 한 줄에 하나씩 출력한다.

위치는 행 번호와 열 번호를 공백으로 구분해 출력한다. 제일 윗줄의 행 번호는 1이고, 각 행의 가장 왼쪽 칸의 열 번호는 1이다. 가능한 배치가 여러 가지이면 그중 아무 배치나 출력해도 된다.

예제1

  1. 예제 1

    입력
    6
    3
    6
    9
    10
    14
    18
    
    예상 출력
    2
    1 1
    3 2
    4
    3 1
    4 3
    5 5
    6 2
    6
    4 1
    5 3
    6 5
    7 7
    8 2
    9 4
    7
    4 1
    5 3
    6 5
    7 7
    8 2
    9 4
    10 6
    9
    6 1
    7 3
    8 5
    9 7
    10 9
    11 11
    12 2
    13 4
    14 6
    12
    7 1
    8 3
    9 5
    10 7
    11 9
    12 11
    13 13
    14 2
    15 4
    16 6
    17 8
    18 10