1. Back-tracking(Advanced Brute-Force Algorithm)
Back-tracking
•
모든 경우를 시도해 보는 코드(완전 탐색)를 구현하기가 까다로운 경우에 사용할 수 있습니다.
(가령, 문제의 크기 N에 따라 N중 반복문을 구현해야 하는 경우)
•
재귀호출을 이용하여 편리하게 구현할 수 있습니다.
ex) 순열 구하기
2. Back-tracking Idea
func doRecursion(_ x: Int) -> Void {
//x 번째 for문을 실행
if x > n {
print(numbers)
} else {
for i = 1 ~ n {
if 아직 숫자 i가 없다면,
x번째 for에서 숫자 i를 등록하고,
doRecursion(x + 1)
}
}
}
Swift
복사