N-Queen
ํ ํ์ ํธ์ด ๊ผญ ํ๋์ฉ ์์ด์ผ ํจ
ํธ์ ๋๋ ํ ๊ฒฝ์ฐ์ ์๋ฅผ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋์์ ์ธ๋ฑ์ค๊ฐ ํ์ ๋ปํ๊ณ , ํด๋น ์ซ์๋ ์ด๋ ์ด์ ๋์ ๊ฒ์ธ์ง๊ฐ ๋๋ค.
๋ค์ ํ์ ํธ์ ์ ํ ๋๋ง๋ค ์ด๋ฏธ ๊ฐ์ ์ด์ ์๋์ง ๊ฒํ ํ๊ณ , ๊ธฐ์กด์ ๊ฒ๋ค๊ณผ ๋๊ฐ์ ์์น์ ๋ง๋์ง ๊ฒํ ํ๋ฉด์ ๋ง์ ๋๋ง ์ง์ด๋ฃ๊ณ ๋ค์ ํ์ ํฅํด ์ฌ๊ท
๋ชจ๋ ํ์ด ์ฐผ๋ค๋ฉด, return
์ฒด์คํ์ ๋์นญ์ฑ์ ๊ณ ๋ คํด ์ฐ์ฐํ์ ์ค์ฌ์ค
def recu(na):
global cnt
if len(na) == n:
cnt += 1
return
for i in range(n):
if i not in na:
p = True
for j in range(len(na)):
if abs(na[j] - i) == abs(j - len(na)):
p = False
break
if p:
ta = []
for j in range(len(na)):
ta.append(na[j])
ta.append(i)
recu(ta)
import sys
sys.stdin = open('note.txt', 'r')
n = int(input())
cnt = 0
# ์ง์
if not n % 2:
for i in range(n//2):
a = [i]
recu(a)
print(2*cnt)
# ํ์
else:
for i in range(n//2):
a = [i]
recu(a)
cnt *= 2
a = [n // 2]
recu(a)
print(cnt)
Last updated
Was this helpful?