본문 바로가기

Algorithm/Tips3

순열, 조합, 중복순열, 중복조합 목차 순열(Permutations) 순열은 주어진 원소들로 만들 수 있는 모든 가능한 순서 있는 배열입니다. (순서가 중요한 경우) 시간복잡도 : O(nPr) 예시 itertools 라이브러리 이용 코드 from itertools import permutations print(list(permutations([1, 2, 3, 4, 5], 3))) 직접구현 코드 def permutations(arr, r): def generate(arr, prefix=[]): if len(prefix) == r: result.append(prefix) return for i in range(len(arr)): generate(arr[:i] + arr[i + 1 :], prefix + [arr[i]]) result = [].. 2024. 4. 10.
빅오(big-O) (시간복잡도) 목차 빅오 빅오(O, big-O)란 입력값이 무한대로 향할때 함수의 상한을 설명하는 수학적 표기 방법입니다. 이를 이용하여 알고리즘의 실행 시간(시간복잡도)이나 메모리(공간복잡도)가 입력 크기에 따라 어떻게 변화하는지를 대략적으로 표현할 수 있습니다. 알고리즘을 평가할 때는 최악의 경우, 평균적인 경우, 최선의 경우를 고려할 수 있는데, 빅오 표기법은 주로 최악의 경우(worst-case) 시나리오에 초점을 맞춥니다. 빅오 표기법을 사용할 때의 주의 사항 빅오 표기법은 최악의 경우를 나타내므로, 실제 실행 시간을 정확하게 예측하지는 않습니다. 빅오로 시간 복잡도를 표현할 때는 최고차항만을 표기하며, 계수는 무시합니다. 예를 들어 4n^2 + 3n + 4 번만큼 계산하는 함수가 있다면 이 함수의 시간 복잡.. 2024. 4. 7.
그래프(Graph) vs 트리(Tree) 목차 Graph는 Tree를 포함하는 개념입니다. 즉, 모든 트리는 그래프이지만, 모든 그래프는 트리가 아닙니다. 그래프(Graph) 정의 그래프는 노드(Node) 또는 정점(Vertex)들을 연결하는 간선(Edge)의 집합입니다. 종류 방향 여부에 따른 분류 방향 그래프(Directed Graph) : 간선에 방향이 있는 그래프 무방향 그래프(Undirected Graph) : 간선에 방향이 없는 그래프 가중치 여부에 따른 분류 가중치 그래프(Weighted Graph) : 간선에 가중치 또는 비용이 할당된 그래프 비가중치 그래프(Unweighted Graph) : 간선에 가중치가 없는 그래프 순환 여부에 따른 분류 순환 그래프(Cyclic Graph) : 그래프에 최소한 하나의 순환(또는 사이클)이 .. 2023. 10. 16.