1차원 배열로도 구현 가능
row[x]=i는 (x행, i열)에 퀸이 놓여있다는 뜻x전까지 놓여있는 퀸 확인같은 열에 놓여있는지 확인대각선에 놓여있는지 확인: 행 차이==열 차이n에 도달했을때 답 추가n = int(input())
answer = 0
row = [0] * n
def is_promising(x):
for i in range(x):
if row[i] == row[x] or abs(i - x) == abs(row[i] - row[x]):
return False
return True
def dfs(x):
global answer
if x == n:
answer += 1
return
for i in range(n):
row[x] = i # x행 i열
if is_promising(x):
dfs(x + 1)
dfs(0)
print(answer)
O(N!)