N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.
N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
첫째 줄에 N이 주어진다. (1 ≤ N < 15)
첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.
8 -> 92
n = int(input())
ans = 0
row = [0] * n
def find(x):
for i in range(x):
if row[x] == row[i] or abs(row[x] - row[i]) == abs(x - i):
return False
return True
def n_queens(x):
global ans
if x == n:
ans += 1
else:
for i in range(n):
row[x] = i
if find(x):
n_queens(x + 1)
n_queens(0)
print(ans)
abs == 절대값 함수
한줄씩 밑에 대각선에 존재하는지 안하는지 판단해서 넘어가고넘어가고 하는형식인것같다
https://seongonion.tistory.com/103
참고