정렬 방식 자주 사용하는 정렬 방식은 크게 2가지로 나눌 수 있다. 첫 번째로 2중 반복문을 사용하는 Bubble, Select, Insert 정렬이다. 두 번째는 분할-정복 방법을 사용하는 병합, 퀵 정렬이다. 2중 반복문을 사용하는 정렬 방식 해당 방식은 최악의 경우 시간복잡도는 O(N^2)이 된다. 이와 같은 이유는 2개의 반복문을 통해 값을 비교하기 때문이다. Bubble Sort 서로 인접한 두 원소를 검사하여 정렬하는 방식을 사용한다. swap이 더 이상 발생하지 않으면, 중단하여 불필요한 반복문을 실행하지 않을 수 있다. def bubble_sort(nums): for i in range(len(nums)): swap = False for j in range(1, len(nums)): if ..
그래프 탐색 방법 그래프를 탐색하는 방법중 DFS(Depth First Search와 BFS(Breadth First Search)를 간단한 예시를 통해 이해하고자 한다. 두 방식은 각각 Stack과 Queue를 통해 구현할 수 있으며, 그래프 방문 여부를 체크하여 중복으로 탐색하는 것을 방지하여야 한다. 그래프를 코드로 나타내기 그림 1의 그래프에 대한 노드 정보를 코드로 나타내면 다음과 같다. graph = { 'A': ['B', 'C'], 'B': ['A', 'D'], 'C': ['A', 'E', 'F'], 'D': ['B', 'G'], 'E': ['C', 'H'], 'F': ['C'], 'G': ['D'], 'H': ['E'], } DFS 그림 2는 루트 노드를 시작으로 모든 그래프 경로를 탐색하..