https://www.acmicpc.net/problem/9663
n-queen 문제이다.
DFS로 접근해서 위 행에서부터 퀸을 배치해 나가면서, check라는 함수를 통해서 가로 세로, 대각선에 놓을 수 있는지 판단했다.
n = int(input())
def check(x):
for i in range(x):
if row[x] == row[i]:
return False
if abs(row[x] - row[i]) == x - i:
return False
return True
def dfs(x):
global result
if x == n:
result += 1
else:
for i in range(n):
row[x] = i
if check(x):
dfs(x + 1)
row = [0] * n
result = 0
dfs(0)
print(result)