그래프(graph)
오일러경로 해밀턴경로 그래프순회 DFS 깊이우선탐색 BFS 너비우선탐색 백트래킹 제약충적문제
그래프(Graph)
기본개념
오일러 경로
해밀턴 경로
그래프 순회
- DFS(깊이우선탐색)
- BFS(너비우선탐색)
백트래킹 (N-Queen)
백트래킹은 해결책에 대한 후보를 구축해 나아가다 가능성이 없다고 판단되는 즉시 후볼를 포기(백트랙)해 정답을 찾아가는 범용적인 알고리즘으로 제약 충족 문제에 특히 유용하다.
leetcode 문제 https://leetcode.com/problems/n-queens/
def nqueen(n):
visited = [-1] * n # 배열을 n개 만든다
cnt=0 # 카운터 변수 선언
# 범위를 벗어 났는지 확인
def is_ok_on(nth_row):
#
for row in range(nth_row):
if visited[nth_row] == visited[row] or nth_row - row == abs(visited[nth_row] - visited[row]):
return False
return True
def dfs(row):
if row >= n:
nonlocal cnt
cnt += 1
grid = [['.'] * n for _ in range(n)]
for idx, value in enumerate(visited):
grid[idx][value] = 'Q'
return
for col in range(n):
visited[row] = col
if is_ok_on(row):
dfs(row + 1)
dfs(0)
return cnt
print(nqueen(int(input())))
assert nqueen(4) == [[".Q..", "…Q", "Q…", "..Q."], ["..Q.", "Q…", "…Q", ".Q.."]]
```