- 첫 번째 열부터 퀸을 놓기 시작한다.
- 두 번째 열부터는 대각선과 행,열을 확인해서 놓을 수 있는 위치 인지 아닌지를 판단한다.
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.
N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
pypy로 제출 시 정답
n=int(input())
row=[0]*n
def check(x):
for i in range(x):
if row[i]==row[x] or abs(row[i]-row[x])==abs(i-x):
return False
return True
answer=0
def NQueen(x):
global answer
if x==n:
answer+=1
return
else:
#x행 i열에
for i in range(n):
row[x]=i
if check(x):
NQueen(x+1)
NQueen(0)
print(answer)