본문 바로가기

자료구조

(26)
재귀알고리즘(하노이타워) 하노이 타워를 재귀함수를 통해 구현 해보자. 하노이타워의 조건은 다음과 같다. 1. 원반은 한번에 하나씩만 옮길 수 있다. 2. 옮기는 과정에서 작은 원반의 위에 큰 원반이 올려져서는 안된다. 위 그림 ABC 원반을 3번 기둥으로 옮기기 위해서는 다음과 같은 패턴이 들어간다. C를 옮기기 위해서는 B를 옮겨야 한다. B를 옮기기 위해서는 A를 옮겨야 한다. A는 옮기면 된다. ~를 옮겨야 한다. 여기서 원반 갯수가 늘어나도 ~~를 옮겨야 한다는 건 달라지지 않는다. 좀 더 보강해서 5개의 원반이 있다고 하자 (A, B, C, D, E) ABCDE를 3번 기둥에 옮기기 위해서는 (A,B,C,D)를 2번기둥에 옮겨야 한다. E를 옮긴 후 ABCD를 3번 기둥에 옮긴다. ABCD를 3번 기둥에 옮기기 위해서는..
이진 탐색 알고리즘 순차탐색은 for문을 통해 순차적으로 검색하는 간단한 방식으로 제외한다. 이진탐색 알고리즘을 사용하기 위해서는 다음의 조건을 만족해야만 한다. "배열에 저장된 데이터는 정렬되어 있어야만 한다." 이진 탐색 알고리즘은 정렬 된 데이터가 아니면 적용이 불가능하다. 길이가 8인 배열(array)에 다음과 같이 정렬된 상태로 데이터가 저장되어 있다고 가정하자. 여기서 숫자 1이 저장되어 있는 지 확인하기위해 이진 탐색 알고리즘은 다음과 같다. 1. 탐색 범위에서의 센터 값이 내가 찾고자 하는 값이 맞는 지 확인한다. 2. 찾은 값이 찾고자 하는 값보다 크면 탐색 범위를 왼쪽으로 줄인다. 3. 다시 1번을 반복한다. 4. 값을 찾을 때 까지 1~3을 반복 한다. 또는 last_idx 가 first_idx 보다 작..