728x90
- queen이 같은 행이나 열에 있으면 안됌
Backtracking
- 진행하다가 막다른 길에 도달할 때 왔던 길을 되돌아가는 방법
*상태공간트리
- 상태공간트리란 찾는 해를 포함하는 트리
- 해가 존재한다면 그것은 반드시 이 트리의 어떤 한 노드에 해당함
-> 이 트리를 체계적으로 탐색하면 해를 구할 수 있음
* 상태공간 트리의 모든 노드를 탐색해야 하는 것은 아님
ex) 1번 말이 1,1에 있다면 2번말은 2,1과 2,2에는 갈 수가 없으므로 그 밑은 찾아볼 필요가 없다.
=> backtracking 기법
- 꽝인지 확인 -> 밑으로 내려갈 필요 x
- 정답이라면 리턴
- 꽝이 아닌데 정답도 아니라면 -> queen함수를 다시 호출
- 성공인지 확인하는 방법 : 매개변수 값이 내가 놓고 싶은 말의 개수와 같아지면 성공
- 꽝이 아니고 성공이 아닐 때
-> 현재 level에 +1을 한 값을 index로 말을 둘 수 있는 값들을 모두 넣는다. -> level+1을 매개변수로 queens함수를 호출한다.
꽝인지 확인하는 함수
728x90
'알고리즘' 카테고리의 다른 글
레드블랙트리 (0) | 2021.05.12 |
---|---|
멱집합 (0) | 2021.05.05 |
순환의 응용 - 미로찾기 (0) | 2021.05.05 |
[백준 1654] 랜선 자르기 [java] (0) | 2021.05.04 |
[백준10816] 숫자 카드 2[java] (0) | 2021.05.04 |
댓글