[순환] N-Queens
2023. 7. 21. 21:50ㆍ기타(이론)/인프런 - 알고리즘
BACK-TRACKING
말이 없는 판 #
말을 둔 판 *
*### 첫번째 말
##*# 두번째 말
이 경우, 세번째 말을 어느곳에도 둘 수 없으므로 두번째 말의 선택을 번복
*### 첫번째 말
###* 두번째 말
#*## 세번째 말
네번째 말 놓을 자리 없음, 세번째 말의 선택 번복
하지만 더이상 놓을 곳이 없기 때문에
두번째 말의 선택을 번복.
.
.
상태공간트리
찾는 해를 포함하는 트리.
상태공간 트리의 모든 노드를 탐색해야 하는 것은 아님
되추적 기법 (Backtracking)
상태공간 트리를 깊이 우선 방식으로 탐색하여 해를 찾는 알고리즘
int[] cols = new int[N+1];
boolean queens(int level)
{
if(!promising(level))
return false;
else if(level==N)
for(int i=1;i<=N;i++)
System.out.println("("+ i ", "+cols[i]+")");
else
for(int i=1;i<N;i++) {//visit children recursively //전의 전택을 회고하라
cols[level+1] = i; //level+1번째 말을 각각의 열에 놓기
if(queens(level+1)) //recursion을 호출한다
return true;
}
return false;
}
boolean promising(int level)
{
for(int i=1;i<level;i++) {
if(cols[i]==cols[level])
return false;
else if (level-i==Math.abs(cols[level]-cols[i])) //같은 대각선에 놓였는지 검사
return false;
}
return true;
}
[무료] 영리한 프로그래밍을 위한 알고리즘 강좌 - 인프런 | 강의
영리하게 프로그래밍을 할 수 있기 위한 기본 소양인 '알고리즘'을 배우고 응용하는 방법을 배웁니다., 개발자라면 꼭 알아야 할 알고리즘 입문! [사진] 1. 강의 소개 부경대학교 IT융합응용공학
www.inflearn.com
'기타(이론) > 인프런 - 알고리즘' 카테고리의 다른 글
[정렬] lower bound, sorting in linear time, radix Sort, Sorting in Java (0) | 2023.08.12 |
---|---|
[정렬] SelectionSort, BubbleSort, InsertionSort, MergeSort, QuickSort, HeapSort (0) | 2023.07.29 |
[순환] Counting Cells in a Blob (0) | 2023.07.21 |
[순환] Maze - 미로찾기 (0) | 2023.07.21 |
[순환] 순환 알고리즘의 설계 (0) | 2023.07.21 |