728x90
백준 9663 N-Queen
문제
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.
N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (1 ≤ N < 15)
출력
첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.
제출
n=int(input())
a=0
l=[0]*n
def ch(s):
for i in range(s):
if l[s]==l[i] or abs(l[s]-l[i])==s-i:
return False
return True
def nq(s):
global a
if s==n:
a+=1
else:
for i in range(n):
l[s]=i
if ch(s):
nq(s+1)
nq(0)
print(a)
팁
문제는 해결이 돼도 Python 3는 시간 초과가 뜨기 때문에 PyPy3로 제출하였다.
예제
8
결과
728x90
'Python > 백준' 카테고리의 다른 글
[Python] 백준 14888 연산자 끼워넣기 (0) | 2023.05.27 |
---|---|
[Python] 백준 2580 스도쿠 (시간 초과) (0) | 2023.05.26 |
[Python] 백준 15652 N과 M(4) (0) | 2023.05.24 |
[Python] 백준 15651 N과 M (3) (0) | 2023.05.23 |
[Python] 백준 15650 N과 M (2) (0) | 2023.05.22 |
댓글