Beakjoon&프로그래머스/파이썬
[백준/파이썬] 9663번 N-Queen
현장
2022. 5. 22. 15:56
-Code
from sys import stdin
def check(arr, m):
for i in range(m):
if abs(arr[m] - arr[i]) == m - i:
return False
return True
def n_queen(arr, n, q):
global result
if n == q:
result += 1
return
for i in range(q):
arr[n] = i
if visited[i]:
continue
if check(arr, n):
visited[i] = True
n_queen(arr, n + 1, q)
visited[i] = False
N = int(stdin.readline())
chess = [0] * N
visited = [False] * N
result = 0
n_queen(chess, 0, N)
print(result)
처음 코드는 블로그에 써놓은 코드로 제출을 했으나 시간 초과로 틀려서 찾아보니 파이썬이 원래 시간 맞추기 힘든 문제라는 것을 알고 pypy로 제출도 해봤으나 실패를 했습니다. 그래서 더 찾아보니 if문을 하나 줄이면 pypy라도 통과한다고 해서 visited를 넣는 방법으로 해결을 했습니다.