N-Queen 성공
시간 제한메모리 제한제출정답맞힌 사람정답 비율
10 초 | 128 MB | 60844 | 30192 | 19820 | 49.048% |
문제
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.
N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (1 ≤ N < 15)
출력
첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.
예제 입력 1 복사
8
예제 출력 1 복사
92
#9663번
n = int(input()) #숫자받기
ans = 0
Chess = [0] * n #체스판?
def queen_ok(x): #퀸을 놓을 수 있는지 없는지
for i in range(x):
if Chess[x] == Chess[i] or abs(Chess[x] - Chess[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):
# [x, i]에 퀸을 놓겠다.
Chess[x] = i
if queen_ok(x):
n_queens(x+1)
n_queens(0)
print(ans)
오늘거 모르겠어서 다른 분꺼 참고함
다들어찌그리 잘 푸시는지요...ㅠ
'코딩테스트 준비 > 백준' 카테고리의 다른 글
백준5086번 파이썬 배수와 약수 (0) | 2022.03.28 |
---|---|
백준 2580번 파이썬 스도쿠 다시 보기 (0) | 2022.03.24 |
백준 15652번 파이썬 N과M(4) (0) | 2022.03.22 |
백준 15651번 파이썬 N과 M(3) (0) | 2022.03.21 |
백준 15650번 파이썬 N과 M(2) (0) | 2022.03.18 |