-
[๋ฐฑ์ค] 9663 N-Queen with PythonPS 2022. 2. 14. 18:53728x90๋ฐ์ํ
๐ BOJ 9663 N-Queen
๐ก ์กฐ๊ฑด
N-Queen ๋ฌธ์ ๋ ํฌ๊ธฐ๊ฐ N ร N์ธ ์ฒด์คํ ์์ ํธ N๊ฐ๋ฅผ ์๋ก ๊ณต๊ฒฉํ ์ ์๊ฒ ๋๋ ๋ฌธ์ .
1 <= N < 15
๋ธ๋ฃจํธํฌ์ค, ๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin a, b, c = [False for _ in range(15)], [False for _ in range(30)], [False for _ in range(30)] n = int(stdin.readline()) res = 0 def dfs(x): global res if x == n: res += 1 return for y in range(n): if a[y] or b[x + y] or c[x + (n - y)]: continue a[y] = True b[x + y] = True c[x + (n - y)] = True dfs(x + 1) a[y] = False b[x + y] = False c[x + (n - y)] = False dfs(0) print(res)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
8
์คํ๊ฒฐ๊ณผ
92
โจ๏ธ ๋ฌธ์ ํ์ด
ํธ์ ๊ฐ ์ค๋ง๋ค ๋ฐ๋์ ํ๋์ฉ ๋ค์ด๊ฐ์ผํ๋ค.
ํธ์ด ์๋ ์๋ฆฌ ๊ธฐ์ค์ผ๋ก ๋๊ฐ์ , ์ธ๋ก์ ์๋ ๋ค๋ฅธ ํธ์ด ์กด์ฌํ ์ ์๋ค.
ํธ์ ์ขํ๋ฅผ ํ๋ํ๋ ํ์ธํ๋ฉด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
dfs ํจ์์์ ํธ์ ๋์ ๊ฐ์๊ฐ n๊ฐ๊ฐ ๋์์ผ๋ฉด res + 1 ํ returnํ๋ค.
(2)๋ฒ์ ๊ธฐ์ค์ ๋ฐ๋ผ, a๋ ์ธ๋ก์ค, b, c๋ ๋๊ฐ์ ์ ์ฒดํฌํด์ฃผ๋ ๋ฆฌ์คํธ์ด๋ค.
n์ ๊ธธ์ด๋งํผ ์ํํ๋ฉด์ a, b, c ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฐ์ด ํ๋๋ผ๋ True ์ผ ๊ฒฝ์ฐํธ์ ๋์ง ๋ชปํ๋ ์๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ continue
a, b, c ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฐ์ด ๋ชจ๋ False ์ธ ๊ฒฝ์ฐ, ๋ชจ๋ True ๋ก ๊ฐฑ์ ํ ๋ค dfs(x + 1) ์ฌ๊ทํธ์ถ๋น ์ ธ๋์จ ํ์๋ ๋ฐฑํธ๋ํน์ ์ํด a, b, c ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๋ถ๋ถ์ False๋ก ๊ฐฑ์
๐พ ๋๋์
- ๋ฐฑํธ๋ํน์ ๋ํ์ ์ธ ๋ฌธ์ ๋ผ๊ณ ํ์ง๋ง, ๋ํ์ ์ผ๋ก ์ด๋ ค์ด ๋ฌธ์ ๋ผ๊ณ ํ๋๊ฒ ๋ง๋ ๊ฒ ๊ฐ๋ค.
- ๋๊ฐ์ ๊ณผ ์ธ๋ก์ ๊ฐ ์ขํ๋ฅผ ์ผ์ผํ ๊ฒ์ฌํ๋ ค๊ณ ํด์ ์๊ฐ์ด๊ณผ๋ฅผ ํผํ์ง ๋ชปํ๋ค.
- ํ์ด๋ฅผ ๋ณด๊ณ ์ผ์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ธ ๊ฐ ๋ง๋ค์ด ๊ฒ์ฌํ๋ ๊ฒ์ ๋ณด๊ณ , ๋๋๋ ๊ธฐ์ต์ด ์๋ค.
- ๋ฌธ์ ๋ฅผ ํฌ์คํ ํ๋ฉด์ ๋ค์ ํ ๋ฒ ํ์ด๋ฅผ ์๊ฐํด๋ณด๋ ๊ฒ์ด ํฐ ๋์์ด ๋์๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 13565 ์นจํฌ with Python (0) 2022.02.19 [๋ฐฑ์ค] 11048 ์ด๋ํ๊ธฐ with Python (0) 2022.02.19 [๋ฐฑ์ค] 2477 ์ฐธ์ธ๋ฐญ with Python (0) 2022.02.14 [๋ฐฑ์ค] 2422 ํ์ค์ ์ด ์ดํ๋ฆฌ์์ ๊ฐ์ ์์ด์คํฌ๋ฆผ์ ์ฌ๋จน๋๋ฐ with Python (0) 2022.02.13 [๋ฐฑ์ค] 1759 ์ํธ ๋ง๋ค๊ธฐ with Python (0) 2022.02.13