시간복잡도 2

[알고리즘] 코딩테스트 - 복잡도

복잡도란? 복잡도 (Complexity)는 알고리즘의 성능을 나타내는 척도이다. 복잡도는 크게 두가지로 구분할 수 있다. 시간 복잡도 : 알고리즘을 위해 필요한 연산의 횟수 공간 복잡도 : 알고리즘을 위해 필요한 메모리의 양 시간 복잡도는 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지를 의미한다. 공간 복잡도는 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지를 의미한다. 동일한 기능을 수행하는 알고리즘이 있다면 일반적으로 복잡도가 낮을 수록 좋은 알고리즘이다. 시간복잡도와 공간복잡도는 일종의 거래 관계가 성립한다. 메모리를 많이 사용하는 대신 시간적 이점을 얻을 수 있는 경우가 있는데 이 방법으로 메모이제이션 기법이 있다. 시간 복잡도 시간 복잡도를 표기할 때는 빅오..

알고리즘 2023.08.07

[DFS] 알고리즘 - 깊이 우선 탐색 (DFS)

깊이 우선 탐색 알고리즘 (DFS) 한 루트로 들어가 가장 깊이 들어가서 탐색후 돌아가 다시 다른 루트로 가장 깊이 탐색하는 방식이다. 넓게 탐색하는 것이 아닌 깊이 탐색하는 방식이다. 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 스택 자료구조를 사용한다. 구현 방법 재귀 호출 스택 배열 동작 과정 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다 2번의 과정을 더 이상 수행할 수 없을 때 까지 반복한다. 사용 용도 순회를 하는 경우에 많이 사용된다. 백트레킹에 사용된다. 자동 미로 생성에 많이 사용된다. 유향 그래프에서 ..

알고리즘/개념 2023.07.26