백준 9663번 풀이 python
2022. 12. 30. 01:20ㆍ에러&&공부노트
문제
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.
N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (1 ≤ N < 15)
출력
첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.
//예제 입력 1
8
//예제 출력 1
92
import sys
input = sys.stdin.readline()
n = int(input)
colArr = [0] * n
result = 0
def promising(x):
flag = True
for i in range(x):
# 같은 열에 있거나 대각선 라인에 있는지 판별
if(colArr[x] == colArr[i] or abs(colArr[x]-colArr[i]) == abs((x-i))):
flag=False
return flag
def n_queens(x):
if( x == n ): # 마지막 depth까지 왔다
global result
result += 1
else:
for j in range(n):
colArr[x] = j
if(promising(x)):
n_queens(x+1)
n_queens(0)
print(result)
'에러&&공부노트' 카테고리의 다른 글
백준 24479번 풀이 python (0) | 2023.01.04 |
---|---|
백준 24480번 풀이 python (0) | 2023.01.04 |
백준 15649번 풀이 python (0) | 2022.12.30 |
백준 13305번 풀이 python (0) | 2022.12.30 |
백준 1541번 풀이 python (0) | 2022.12.30 |