본문 바로가기

알고리즘/백준 ~ 단계별 풀어보기

[다시 풀어보기] 백준 9663번 "N-Queen"

파이썬

import sys


n = int(sys.stdin.readline())

ans = 0 
row = [0] * n

def is_promising(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
        return
    
    else : 
        for i in range(n):
            row[x] = i
            if is_promising(x):
                n_queens(x+1)
                
n_queens(0)
print( ans)
# 참고 : https://seongonion.tistory.com/103

자세한 풀이  🔜 https://seongonion.tistory.com/103

 

[백준] 9663번 N-Queen - 파이썬(Python)

문제 (링크) https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하..

seongonion.tistory.com