[알고리즘] NQueen (백준 9663)
백준 9663번 문제 ) NQueen
1. 필요 변수
1) N : 체스판 한 변의 길이 // 퀸의 갯수
2) row :
- [중요] 이런 문제는 행을 중심으로 탐색하는 게 유리하다 => '대각선' 상의 경우의 수 처리하기 편리
- [중요] 체스판은 2차원 배열이다. row 배열의 index를 행, value를 열로 생각한다.
3) count : 총 경우의 수(퀸이 놓일)
import sys
N = int(sys.stdin.readline())
row = [0]*N
count = 0
def checkQueens(x) : # 같은 열인지 대각선 어떤 지만 확인하면 된다.
for i in range(x):
if row[i] == row[x] or abs(x-i) == abs(row[x]-row[i]):
return False
return True
def NQueen(x):
global count
# 종료조건
if x == N :
count +=1
return
else :
for i in range(N):
row[x] = i
if checkQueens(x) :
NQueen(x+1)
NQueen(0)
print(count)
Author And Source
이 문제에 관하여([알고리즘] NQueen (백준 9663)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gsh723/알고리즘-NQueen-백준-9663저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)