문제풀이/기타

[파이썬] [백트래킹] 백준 9663 N-Queen

승무_ 2022. 3. 24. 16:00

문제

https://www.acmicpc.net/problem/9663

 

9663번: N-Queen

N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

코드

n=int(input())
row=[0]*n

result=0

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

def dfs(x):
    global result
    if x==n:
        result+=1
        return

    for i in range(n):
        row[x]=i
        if check(x):
            dfs(x+1)

dfs(0)
print(result)