9663๋ฒ: N-Queen
N-Queen ๋ฌธ์ ๋ ํฌ๊ธฐ๊ฐ N × N์ธ ์ฒด์คํ ์์ ํธ N๊ฐ๋ฅผ ์๋ก ๊ณต๊ฒฉํ ์ ์๊ฒ ๋๋ ๋ฌธ์ ์ด๋ค. N์ด ์ฃผ์ด์ก์ ๋, ํธ์ ๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
www.acmicpc.net
ํธ์ด ์๋ก๋ฅผ ๊ณต๊ฒฉํ ์ ์๊ธฐ ์ํด์๋ ํ ์ด์ ํ๋์ ํธ, ํ ํ์ ํ๋์ ํธ, ํ ๋๊ฐ์ ์ ํ๋์ ํธ๋ง ์กด์ฌํด์ผ ํ๋ค.
๊ฐ ํธ์ ์์น๋ฅผ ์ ์ฅํ row
๊ฐ ์นผ๋ผ์ ํธ์ด ์๋์ง ํ์ธํ column ํฌ๊ธฐ n
๊ฐ ๋๊ฐ์ ์ ํธ์ด ์๋์ง ํ์ธํ leri, rile ํฌ๊ธฐ 2*n-1
# 9663.py
n = int(input())
row = [0] * n
column = [False] * n
leri = [False] * (2 * n - 1)
rile = [False] * (2 * n - 1)
cnt = []
def setQueen(i):
for j in range(n):
if not column[j] and not leri[i + j] and not rile[i - j + n - 1]:
row[i] = j
if i == n - 1:
cnt.append(row)
else:
column[j] = leri[i + j] = rile[i - j + n - 1] = True
setQueen(i + 1)
column[j] = leri[i + j] = rile[i - j + n - 1] = False
setQueen(0)
print(len(cnt))
์ ๋์ค๋๋ฐ ์๊ฐ์ด๊ณผ...
ํ์ด์ฌ์ ๋ฐฑํธ๋ํน ์๊ฐ ๋๋ฌด ์ค๋ ๊ฑธ๋ ค์ ๊ถ์ฅํ์ง ์๋๋ค๋ค...ใ
์ผ๋จ์ ๋ด ์๋ชป์ด ์๋๋ผ๊ณ ์๊ฐํ๊ณ ๋์ด๊ฐ๋ค ใ
answer = [0, 1, 0, 0, 2, 10, 4, 40, 92, 352, 724, 2680, 14200, 73712, 365596]
print(answer[int(input())])
์ด๋ ๊ฒ ํต๊ณผํจ
์ ๋ญ์ง ๋๊ฐ์ ์ฝ๋ PyPy3์ผ๋ก ๋๋ฆฌ๋๊น ๋ง์๋ค
PyPy๊ฐ ๋์ฒด ๋ญ๊น.. ์ด๋ ต๋ค...