# 골드 5레벨 N-Queen
from collections import defaultdict
N = int(input())
cnt = 0
cen = defaultdict(int)
l = defaultdict(int)
r = defaultdict(int)
def re(idx):
global cnt
if idx == N:
cnt += 1
return
for i in range(N):
if not cen[i] and not l[i + idx] and not r[i - idx]:
cen[i] = 1
l[i + idx] = 1
r[i - idx] = 1
re(idx + 1)
cen[i] = 0
l[i + idx] = 0
r[i - idx] = 0
return
re(0)
print(cnt)
해당 문제는 백준과 프로그래머스 둘다 존재하는 문제인데 백준의 특성상 python의 시간복잡도가 매우 타이트하여 다른 분들의 프로그래머스 통과 코드가 백준의 python, pypy3에서도 시간초과가 걸리는 경우가 많다.
내 코드는 pypy3에서 통과한 코드이며 python에서는 시간초과에 걸린코드이다.
아마 재귀 함수를 부르는 부분에서 시간을 많이 먹는 것 같은데 pypy3에서 통과를 한다면 대부분 로직이 틀린 코드는 아니니 걱정할 필요 없다.