728x90

알고리즘 4

[Algoritnm] 깊이 우선 탐색 (DFS, Depth-first Search)

그래프 (Grpah) 함수 그래프 != 그래프 이론의 그래프 함수 그래프 : x(정의역), y(치역)에 해당하는 값을 좌표 상에 표시하는것 그래프 이론의 그래프 : *꼭짓점(Vertex)과 간선(Edge)으로 구성, G = (V, E) *꼭짓점(Vertex) == 노드(Node) +추가 - 그래프에는 간선이 화살표 => 단방향, 실선인 경우 => 양방향 그래프 - 간선에 가중치를 주는 경우도 있음, 아무것도 쓰여있지 않으면 모두 1이거나 같은 가중치 깊이 우선 탐색 (DFS, Depth-first Search) : 말 그대로 상위 레벨의 노드 --> 하위 레벨의 노드를 우선적으로 탐색하는 것이다. 하지만 이미 방문했던 노드는 다시 방문하지 못하며 더이상 탐색할 노드가 없을 시 이전 노드로 옮겨서 방문하지..

[Algorithm] 최대공약수

최대공약수 -정수들의 공통된 약수중 가장 큰 약수 방법1: 전체 순회 1) 정수들 중 가장 작은 정수를 찾눈다 2) 정수의 값을 하나씩 줄여 나가면서(i) 두 정수를 나눈다 3) 둘 다 0으로 나누어 떨어질 때의 i 가 최대공약수가 된다 N, M = map(int, input().split()) lst = [] minimum = min(N,M) for i in range(1,minimum+1): if (N % i == 0) and (M % i == 0): lst.append(i) else: continue print(lst[-1]) 방법 2 : 유클리드 알고리즘 - a>b, a와 b의 최대공약수는 b와 a%b와 같다 (gcd(a, b) == gcd(b, a%b)) 1) 정수 두개 중 작은값을 찾는다 2)..

[Algorithm] 이분탐색 (Binary Search)

배열을 정렬 중앙값을 찾는다 중앙값을 기준으로 찾을 값이 큰 값 -> 반의 오른쪽으로 중앙값을 기준으로 찾을 값이 작은 값 -> 반의 왼쪽으로 같다면 -> 찾은 값을 반환 -> break 오른쪽 왼쪽을 구분하기 위하여 start, end 값을 지정 start = 0 end = len(배열) 중앙값 (start + ) // 2 list_a = [1,2,3,4,5,6,7] def binary_search(target, data): start = 0 end = len(data) - 1 while start target: end = mid-1 print(data[start:end]) else: start = mid+1 print(data[start:end]) print('없다') binary_search(3, ..

728x90
반응형