그래프 탐색 알고리즘에 대한 이해가 선행되어야 한다. 그래프와 DFS/BFS의 개념을 모른다면 여기를 추천한다. Depth-First Search (DFS) - 저번 시간에 한 것📍 - 깊이 우선 탐색 - 이번 포스팅에서는 weigh을 가지지 않는 방향 그래프에서 모든 경우를 구해볼 때 이 DFS를 사용할 것이다. 예를 들면 1부터 N까지의 자연수 중 n개의 집합을 만들 수 있을 때, 가능한 모든 순열을 구해야 할 때 사용할 수 있다. - 스택을 통해 구현한다. 즉, 재귀함수를 통해 구현할 것이다. (함수가 호출되면 스택 영역에 쌓이게 된다. 함수가 무한호출될 때 Stack Overflow 가 발생하는 것도 여기서 기인하는 것.) Breadth-First Search (BFS) - 이번 시간에 할 것📍 ..
그래프 탐색 알고리즘에 대한 이해가 선행되어야 한다. 그래프와 DFS/BFS의 개념을 모른다면 여기를 추천한다. Depth-First Search (DFS) - 이번 시간에 할 것📍 - 깊이 우선 탐색 - 이번 포스팅에서는 weigh을 가지지 않는 방향 그래프에서 모든 경우를 구해볼 때 이 DFS를 사용할 것이다. 예를 들면 1부터 N까지의 자연수 중 n개의 집합을 만들 수 있을 때, 가능한 모든 순열을 구해야 할 때 사용할 수 있다. - 스택을 통해 구현한다. 즉, 재귀함수를 통해 구현할 것이다. (함수가 호출되면 스택 영역에 쌓이게 된다. 함수가 무한호출될 때 Stack Overflow 가 발생하는 것도 여기서 기인하는 것.) Breadth-First Search (BFS) - 다음 시간에 할 것📍 ..
Swift로 작성하는 Stack struct Stack { var isEmpty: Bool { return self.list.isEmpty } var top: T? { return self.list.last } mutating func push(_ item: T) { self.list.append(item) } mutating func pop() -> T? { return self.list.popLast() } private var list = [T]() } Swift로 간단히 작성해본 Stack이다. 특별히 어려운 부분은 없으며 포인트가 되는 부분은 다음 두 가지다. 1. 제네럴한 아이템을 관리할 수 있도록 제너럴 를 사용하였다. 2. 값 타입인 Struct로 작성했기 때문에 push 와 pop 함수에..