첫째 줄에 N이 주어진다. N은 8, 26, 213, 2012, 99991, 99999중 하나이다.
출력
N개의 줄을 출력해야 한다. i번째 줄에는 하나의 정수를 출력해야 하고, 이 정수는 i번째 행에 있는 퀸이 있는 열의 번호이다.
입력 예시
8
출력 예시
3
6
8
1
4
7
5
2
풀이
왜 플래티넘 2이 붙었지...? 싶었는데, 조금 기분나쁜 문제였다. 이 문제를 풀기 위해서 요구되는 지식이 매우 특정적이고, 이를 즉석에서 생각해내기란 쉽지 않다. 아마 아이디어를 생각해낼 난이도 자체는 매우 높으나(논문으로도 발표되었던 특정 해 구하기 방법이므로), 이를 구현하는 것은 매우 쉬우므로 이 정도 난이도를 받게 된 것 같다.
맨 첫 번째 접근은 나이트의 행마를 생각해낸 것이다. 퀸 이동은 가로 - 세로 - 대각선으로 가능하므로, 퀸에서 가로, 세로가 1칸, 2칸 차이가 나는 나이트 행마는 퀸의 이동 가능 칸에 포함되지 않는다. 즉 약 N // 2 개의 퀸을 나이트를 배치하듯 배치하면 된다. 우선 2번째 칸부터 2칸씩 띄엄띄엄 배치하고, 끝까지 도달하면 1번째 칸부터 다시 2칸씩 띄워서 배치한다.
Q
Q
Q
Q
이를테면 이렇게. 대부분의 경우는 잘 동작했지만, wa를 내놓는 걸 확인했다. 아마 특정 상황에서는 잘 동작하지 않는 것 같은데, 우리가 테스트해봄직한 낮은 N값에서는 잘 동작함을 확인했기에... 헤메기 시작했다.