-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를 넣는 방법으로 해결을 했습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 17390번 이건 꼭 풀어야 해! (0) | 2022.05.24 |
---|---|
[백준/파이썬] 21275번 폰 호석만 (0) | 2022.05.23 |
[백준/파이썬] 4963번 섬의 개수 (0) | 2022.05.21 |
[백준/파이썬] 17451번 평행 우주 (0) | 2022.05.20 |
[백준/파이썬] 15810번 풍선 공장 (0) | 2022.05.20 |