[C#, Unity] 우선순위 큐(PriorityQueue)
·
Unity,C#/자료구조
■ 개요Queue와 같이 FIFO(먼저 들어온 요소가 먼저 나감)처럼 삽입은 순서대로 하지만, 꺼낼 때는 우선순위가 높은(낮은) 순서로 꺼내지게 된다.중복을 허용하며, 우선순위가 같다면 일반적으로 삽입 순서에 따라 처리되거나, 다른 기준으로 정렬될 수 있다.  ■ Heap 우선순위 큐는 힙(Heap)을 사용해 구현하는데, 여기서 말하는 힙은 메모리 구조에서 말하는 힙이 아닌, “자료구조에서의 힙”을 의미한다. Heap 자료구조는 “완전 이진트리”로 구성된다.모든 노드에 저장된 값은 자식 노드에 저장된 값보다 크거나(작거나) 같아야 한다.마지막 레벨은 왼쪽부터 값이 채워진다.위에서부터 내려갈수록 값이 커지면 Min-Heap, 값이 작아지면 Max-Heap이다.Min-Heap이던, Max-Heap이던 Roo..
[C#, Unity, 최단경로(PathFinding)] TileMap 너비우선탐색(BFS) 알고리즘
·
Unity,C#/알고리즘
■ 개요우리가 흔히 알고 있는 그래프 탐색 알고리즘에는 깊이우선탐색(DFS), 너비우선탐색(BFS), 다익스트라(Dijkstra) 알고리즘 등이 있다. 그렇다면 이런 그래프 탐색 알고리즘이 "2차원 배열의 타일맵(TileMap)"에서 어떻게 최단 경로를 찾는 데 사용될 수 있을까?  결론부터 말하자면, TileMap도 그래프이다. 예를 들어, 타일을 상하좌우 4방향으로만 이동할 수 있고, 흰색 타일을 길, 검은 타일을 장애물이라 하자. 이 경우, A타일은 인접한 B,C,D타일로 이동할 수 있다. 이런 타일을 그래프의 노드로 표현하면, A노드는 B,C,D를 자식 노드로 가지고 있는 것과 동일한 구조로 볼 수 있다.즉, 각 타일은 그래프의 정점, 이동 가능한 인접한 타일은 간선으로 연결되어 있는 그래프이다...