본문 바로가기

Python/자료구조

검색, 동적 계획법

참고 자료는 다음과 같습니다.

 

- 파이썬 자료구조와 알고리즘 (한빛미디어, 2019)

검색

검색 알고리즘 : 순차 검색, 이진 검색이 있음

○ 순차 검색 : 배열이 정렬되어 있지 않거나, 연결 리스트 같이 입력이 동적으로 할당되는 경우 사용

  ● 시간복잡도 : O(1)로 최악의 경우 O(n)임

 

○ 이진 검색

  ● 정렬된 배열 내에서 지정된 입력값의 위치(키)를 찾음

  ● 각 단계에서 입력값과 배열 중간 요소 비교하여 일치 안할 때 값의 크기에 따라 왼쪽 또는 오른쪽 하위 배열에서 검색과정 반복.

  ● 시간 복잡도 : O(log n)

동적 계획법

동적 계획법

○ 복잡한 문제를 재귀를 통해 간단한 하위 문제로 분류해 단순화하여 해결하는 방법

○ 어떤 문제가 최적 부분 구조와 중복되는 부분 문제 가지면 동적 계획법으로 해결 가능

  ● 최적 부분 구조 : 답 구하기 위해 사용한 계산 반복해야 하는 문제 구조

○ 부분 문제를 풀고 결과 저장 후 다음 부분 문제 푸는 과정에서 사용

메모이제이션(memoization)

○ 프로그램이 동일 계산 반복시, 이전에 계산한 값을 메모리에 저장해 동일한 계산 반복 수행을 제거해 프로그램의 실행 속도 빠르게 하는 방법

사례

 피보나치 수열

 최장 증가 부분열 : 증가하는 순서(오름차순)로 숫자를 고른 부분열 길이가 최대가 되게 하는 방법

'Python > 자료구조' 카테고리의 다른 글

트리  (0) 2020.10.27
그래프  (0) 2020.10.26
추상 데이터 타입  (0) 2020.10.20