[알고리즘] BFS(너비 우선 탐색), DFS(깊이 우선 탐색) 비교
너비 우선 탐색은 가까운 것 위주로 탐색합니다. 최단경로를 찾아줍니다. 미로 찾기에서 많이 사용됩니다. 너비 우선 탐색을 구현하기 위해서는 fist in first out 자료구조인 큐를 사용해 구현할 수 있습니다. 예시를 통해 함께 살펴보죠. 큐에 노드 1을 넣어줍니다. [1] 1을 방문 처리해줍니다. 큐에서 1을 꺼냅니다. [] 1과 연결된 노드 중 방문하지 않은 2,3을 큐에 넣어줍니다. [2,3] 큐에서 2를 꺼냅니다. [3] 2와 연결된 노드 중 방문하지 않은 4,5를 큐에 넣어줍니다. [3,4,5] 큐에서 3을 꺼냅니다. [4,5] 3과 연결된 노드 중 방문하지 않은 6,7을 큐에 넣어줍니다. [4,5,6,7] 큐에서 4를 꺼냅니다. [5,6,7] 4와 연결된 노드 중 방문하지 않은 노드가 없..
큐와 덱, 1021번 회전하는 큐 풀이
회전하는 큐 문제를 시도해보았다는 전제하에 문제풀이를 설명하도록 하겠습니다. 문제의 핵심은 원하는 숫자를 빼내는 최적의 횟수를 구하는 것입니다. 최적의 횟수, 조건을 파악하는 것이 매우 중요합니다. 예시를 기반으로 생각해 보았을 때 10 2 2 9 위와 같은 입력이 주어졌을 때 2는 인덱스 1에 위치합니다. 이때는 왼쪽으로 한 칸씩 이동하는 것이 가장 빠르게 2를 빼내는 경로입니다. 리스트는 1~10에서 3,4,5,6,7,8,9,10,1이 됩니다. 이때의 9의 인덱스는 6입니다. 이 때는 오른쪽으로 3번 이동하는 것이 최적의 경로입니다. 답은 5입니다. 위의 예시를 기반으로 생각했을 때 빼내고자 하는 숫자의 인덱스가 리스트의 중간 인덱스보다 클 때는 오른쪽으로 이동해서 빼고 작을 때는 왼쪽으로 이동해 빼..