백트래킹 이론
백트래킹(backtracking)
백트래킹 : 제약 조건 만족 문제에서 해를 찾기 위한 전략
상태 공간 트리
N-queen 문제
N-queen 해결
N-queen 문제 해결 코드 : 백준 9663번
Last updated
Last updated
n=int(input())
def is_available(candidate, current_col):
current_row = len(candidate)
for queen_row in range(current_row):
if candidate[queen_row] == current_col or abs(candidate[queen_row] - current_col) == current_row - queen_row:
return False
return True
def DFS(N, current_row, current_candidate, final_result):
if current_row == N:
final_result.append(current_candidate[:])
return
for candidate_col in range(N):
if is_available(current_candidate, candidate_col):
current_candidate.append(candidate_col)
DFS(N, current_row + 1, current_candidate, final_result)
current_candidate.pop()
def solve_n_queens(N):
final_result = []
DFS(N, 0, [], final_result)
return final_result
print(len(solve_n_queens(n)))