BFS란 말 그대로 너비를 우선해서 그래프를 탐색하는 기법이다. 이 알고리즘의 핵심은 큐(queue) 자료구조를 사용하는 것이다. 큐를 사용할 때 가장 성능이 좋기 때문이다. BFS는 노드를 방문하면서 인접한 노드 중 방문하지 않았던 노드의 정보만 반복적으로 큐에 넣어 먼저 큐에 들어있던 노드부터 방문하면 되는 것이다. BFS 알고리즘 구체적인 동작 과정은 아래와 같다. 탐색 시작 노드 정보를 큐에 삽입하고 “방문 처리” 한다. 큐에서 노드를 꺼내 방문하지 않은 인접 노드 정보를 모두 큐에 삽입하고 방문 처리한다. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. 여기서 “방문처리” 란 탐색한 노드를 재방문하지 않도록 구분하는 것이다. 즉, 큐에 한 번이라도 삽입된 노드를 다시 삽입하지 않도록 체..
♾️ Computer Science
다이나믹 프로그램은 메모리 공간을 약간 더 사용하여 연산 속도를 비약적으로 증가시키는 방법이다. 다음의 2가지 조건을 만족할 때 다이나믹 프로그래밍을 사용할 수 있다. 큰 문제를 작은 문제로 나눌 수 있음 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일함 위 조건을 만족하는 대표적인 예로 피보나치 수열이 있다. 피보나치 수열은 다음의 점화식을 만족하는 수열이다. 해당 피보나치 수열을 Python 재귀함수로 구현한다면 다음과 같은 코드로 표현할 수 있다. import time def fibo(x): if x == 1 or x == 2: return 1 return fibo(x-1) + fibo(x-2) for num in range(5, 40, 10): start = time.time() r..