728x90
Baekjoon 9663. N-Queen
[파이썬(python) - 백트래킹]
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.
N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (1 ≤ N < 15)
출력
첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.
입력 예시
8
출력 예시
92
❧ 정답 - pypy 통과
🔎 IDEA) 백트래킹 - 백트래킹 조건 설정으로 퀸을 놓을 수 있는지 검사한다.
[Line 6 - 7]
👉 row[x]
에 퀸을 놓았을 때, 해당 칸이 유효한 지를 검사한다.
#8
👉 만약 같은 열 또는 행에 이미 퀸이 있을 경우, 또는 대각선에 퀸이 있을 경우 퀸을 해당 자리에 놓을 수 없으므로 False
를 리턴한다.
👉 파라미터 x
까지 탐색했을 때, 위의 조건에 모두 걸리지 않는다면 해당 칸에 퀸을 놓을 수 있으므로 True
를 리턴한다.
[Line 14 - 15]
👉 퀸을 n개 놓았을 경우 ans
값을 1 증가시킨다.
[Line 17 - 20]
👉 row[x]
에 퀸을 놓는 경우가 유효하면 다음 단계를 진행한다. n_queens(x+1)
재귀
728x90
'📊 Algorithm > Algorithm PS' 카테고리의 다른 글
[알고리즘 일기 - 파이썬] 231. 멀티탭 스케줄링 (0) | 2022.04.08 |
---|---|
[알고리즘 일기 - 파이썬] 230. 가르침 (0) | 2022.04.06 |
[알고리즘 일기 - 파이썬] 227. 빗물 (0) | 2022.03.30 |
[알고리즘 일기 - 파이썬] 226. 연산자 끼워넣기 (0) | 2022.03.30 |
[알고리즘 일기 - 파이썬] 225. 괄호의 값 (0) | 2022.03.30 |