[알고리즘] 이진 탐색(Binary Search)
·
자료구조 & 알고리즘
정렬된 데이터에서 탐색 범위를 절반씩 줄여나가면서 특정 값을 찾는 알고리즘탐색할 때마다 원소의 개수가 절반으로 줄어들기 때문에 속도가 빠르다시간복잡도 - O(log N)정렬된 배열에서 배열의 중간값(mid)을 구한다.중간값과 탐색 값(target)을 비교한다.   - 중간 값과 탐색 값이 같으면 종료(mid == target)   - 중간 값보다 탐색 값이 크면 중간 값 기준 오른쪽 구역을 탐색(mid    - 중간 값보다 탐색 값이 작으면 중간 값 기준 왼쪽 구역을 탐색(mid > target)탐색 값이 나올 때까지 이 과정을 반복한다.  이진탐색 예시int[] arr ={0, 2, 4, 6, 8, 10, 12, 14, 16}이고, target=4인 경우, 이진 탐색으로 target을 찾는 방법은 다음..
[알고리즘] DFS & BFS
·
자료구조 & 알고리즘
DFS(Depth First Search) : 깊이 우선 탐색그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘해당 그래프를 완벽하게 탐색스택 자료구조(or 재귀 함수) 사용 1. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다.2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리한다. 방문하지 않은 인접 노드가 없으면, 스택에서 최상단 노드를 꺼낸다.3. 2번 과정을 더 이상 수행할 수 없을 때까지 반복한다. DFS 구현public static boolean[] visited = new boolean[9]; //방문 처리 배열public static ArrayList> graph = new ArrayList>(); //그래프를 표현하는 인접리스트publ..