티스토리 뷰

# 9663번 N-Queen
import sys
N = int(sys.stdin.readline())
data = [[0]*N for _ in range(N)]
count = 0
check_col = [0]*N
check_diag = [0]*(2*N-1)
check_diag2 = [0]*(2*N-1)


def check(row, col):
    if check_col[col] == 1:
        return False
    elif check_diag[row+col]==1:
        return False
    elif check_diag2[row-col + (N-1)] == 1:
        return False
    else:
        return True


def dfs(row):
    global count
    if row == N:
        count += 1
        return
    for j in range(N):
        if check(row, j):
            data[row][j] = check_col[j] = check_diag[row+j] = check_diag2[row-j+(N-1)] = 1
            dfs(row+1)
            data[row][j] = check_col[j] = check_diag[row + j] = check_diag2[row - j + (N - 1)] = 0


dfs(0)
print(count)
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함