[알고리즘] DFS, BFS + 문제풀이
인접 행렬 : 2차원 배열로 그래프의 연결관계 표현 인접 리스트 : 리스트로 그래프의 연결 관계 표현 DFS 루트 노드에서 시작해서 다음 분기로 넘어가기 전 해당 분기를 완벽하게 탐색하는 방법 깊은 부분을 우선적으로 탐색 스택, 재귀함수 이용 def dfs(graph, v, visited): visited[v] = True print(v, end=' ') for i in graph[v]: if not visited[i]: dfs(graph, i, visited) graph = [ [], [2,3,8], [1,7], [1,4,5], [3,5], [3,4], [7], [2,6,8], [1,7] ] visited = [False] * 9 dfs(graph, 1, visited) BFS 가까운 노드부터 탐색하는..
2023. 2. 7.
[알고리즘] 정렬 + 문제풀이
버블정렬 O(N^2) loop를 돌며 인접한 데이터 간의 swap 연산 진행 특정 루프의 전체 영역에서 swap이 한 번도 진행되지 않으면 정렬이 완료된 것 n = int(input()) num = [] for i in range(n): a = int(input()) num.append(a) for i in range(n-1): for j in range(n-1-i): if num[j] > num[j+1]: num[j],num[j+1] = num[j+1],num[j] for i in num: print(i) 선택정렬 O(N^2) 남은 정렬 부분의 가장 작은(or 가장 큰) 데이터를 선택해 가장 앞에 있는 데이터와 바꿈 arr = [7,5,9,0,3,1,6,2,4,8] for i in range(len(a..
2023. 2. 2.