본문 바로가기
Python/백준

[Python] 백준 9663 N-Queen (시간 초과)

by 푸_푸 2023. 5. 25.
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

결과

백준 9663 N-Queen

 

 

9663번: N-Queen

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

www.acmicpc.net

 

728x90

댓글