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

Effy_ee·2024년 5월 8일

코딩테스트

목록 보기
96/118
  1. 첫 번째 열부터 퀸을 놓기 시작한다.
  2. 두 번째 열부터는 대각선과 행,열을 확인해서 놓을 수 있는 위치 인지 아닌지를 판단한다.

📖 문제

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

1차 답안

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)

0개의 댓글