
백트래킹으로 모든 경우의 수를 따지면 해결돼는 문제이다.
여기서 각 행과 열에 퀸이 하나만 들어갈 수 있다는 점을 적용시키면 많은 경우의 수를 줄일 수 있다.
처음에는 위의 방법을 생각하지 못하고 모든 경우의 수를 따져서 시간초과가 나서 많이 당황했다..
void sol(int t) { // t: t번째 열
if (t == n) ans++;
else {
for (int i = 0; i < n; i++) {
if (putQ(t, i)) { // 퀸을 둘 수 있는지 체크하는 함수 putQ
//만약 퀸을 둘 수 있다면 현재 위치에 퀸을 둔다.
map[t][i] = 1;
sol(i, t + 1);
map[t][i] = 0;
}
}
}
}