728x90
탐색이란?
: 많은 데이터 속에서 원하는 데이터를 찾는 것.
탐색의 종류
- 완전탐색(Brute Force)
- 이분탐색(이진검색)
- 깊이우선탐색(DFS)
- 너비우선탐색(BFS)
- 문자열탐색
- KMP
- BM
1. 완전탐색
- 가능한 모든 경우의 수 탐색하며 값을 찾는 것
- 결과 값이 가장 확실하지만 그만큼 시간이 가장 오래걸리는 탐색방법
- 반복문/재귀함수를 이용해 완전탐색
# 반복문을 이용한 완전탐색
def solution(trump):
for i in range(len(trump)):
if trump[i] == 8:
return i
return -1
# 재귀함수를 이용한 완전탐색
def solution(trump, loc):
if trump[loc] == 8:
return loc
else:
return solution(trump, loc+1)
2. 이분탐색
- 데이터가 정렬돼 있는 배열에서 특정한 값을 찾아내는 것
- 배열의 중간에 있는 임의의 값을 선액하여 찾고자 하는 값 X와 비교
- X가 중간 값보다 작으면 중간 값을 기준으로 좌측의 데이터들을 대상으로 탐색
- X가 중간 값보다 크면 중간 값을 기준으로 우축의 데이터들을 대상으로 탐색
- 배열의 중간에 있는 임의의 값을 선액하여 찾고자 하는 값 X와 비교
# 이분탐색 예시코드
def solution(trump):
left = 0
right = len(trump)-1
while left <= right :
mid = (left+right)//2
if trump[mid] == 8:
return mid
elif trump[mid] < 8:
left = mid + 1
elif trump[mid] > 8:
right = mid - 1
return mid
'알고리즘&자료구조' 카테고리의 다른 글
4주차 - 진법변환/비트연산 (0) | 2021.09.22 |
---|---|
3주차 - 너비우선탐색/깊이우선탐색 (0) | 2021.09.15 |
1주차 - 스택 & 큐 (0) | 2021.08.23 |
정렬 알고리즘(1) (0) | 2021.08.18 |