haechandev
알고리즘

[백준 - 9663] N-Queen

퀸을 한 행씩 놓고, 다음 행에서 공격받는 칸을 표시·복구한 백트래킹 풀이.

2022년 8월 30일

한 행에 퀸을 하나씩만 놓으면, 다음에는 아직 공격받지 않은 열만 고르면 된다. 퀸을 놓을 때 같은 열과 두 대각선의 아래쪽 칸을 표시하고, 재귀가 끝나면 이번 퀸이 표시한 칸만 다시 지웠다.

row가 n이면 배치 하나를 찾은 것
각 열을 확인한다
공격받지 않았으면 표시 → 다음 행 재귀 → 표시 복구

단순히 모든 좌표에 퀸을 놓아 보는 대신, 행 단위로 탐색 범위를 줄이고 공격 범위를 바로 표시해 불필요한 경우를 제거했다.

문제: 9663 N-Queen · 코드: GitHub에서 보기