728x90
탐색이란?
많은 데이터 속에서 원하는 데이터를 찾는 것
탐색의 종류
- 완전탐색
- 이분탐색
- 깊이우선 탐색
- 너비우선 탐색
- 문자열 탐색
- KMP
- BM
1. 완전탐색
- 브루트 포스라고도 불리며 컴퓨터의 빠른 계산 성능을 활용하여 가능한 모든 경우의 수를 탐색,
효율성 관점에서 최악의 방법
1-1. 반복문
def solution(trump):
for i in range(len(trump)):
if trump[i] == 8 :
return i
return -1
1-2. 재귀함수(동적계획법, 백트래킹, 탐욕법)
- 무한루프에 빠질 수 있음에 주의!
def solution(trump, loc):
if trump[loc] == 8 :
return loc
else :
return solution(trump, loc+1)
2. 이분탐색
- 이진검색이라고도 하며 오름차순으로 정렬된 리스트에서 특정 값의 위치를 찾는 알고리즘,
중간의 값을 선택하여 찾고자 하는 값과의 크고 작음을 비교하는 방법으로 left, mid, right를 사용하여 조정한다.
def solution(trump):
left = 0
right = len(trump)-1
# left가 right보다 작거나 같다면
while(left<=right):
mid = (left+right) // 2 # mid 값 계산
if trump[mid] == 8:
return mid # 정답일 경우 정답 반환
elif trump[mid] < 8:
left = mid + 1 # 정답보다 작을 경우 left를 mid+1로 이동
elif trump[mid] > 8:
right = mid -1 # 정답보다 클 경우 right를 mid-1로 이동
return mid
728x90
'IT > 알고리즘' 카테고리의 다른 글
[python/자료구조] 재귀함수 (0) | 2021.02.15 |
---|---|
[python/자료구조] DFS 와 BFS (0) | 2021.02.12 |
[python/자료구조] 스택(Stack), 큐(Queue)에 대해서 (0) | 2021.02.01 |
[python/프로그래머스] 최솟값 만들기 (0) | 2021.01.24 |
[python/프로그래머스]서울에서 김서방 찾기 (0) | 2021.01.21 |
댓글
최근에 올라온 글
TAG
- 경사하강법
- OpenCV
- slqd
- 자료구조
- Python
- 파이썬
- SQLD
- Scikit
- db
- VGGNet
- Project
- Ai
- 딥러닝
- 기계학습
- sklearn
- SQL
- numpy
- 인공지능
- Min()
- 알고리즘
- Max()
- Programmers
- 프로그래머스
- algorithm
- Pandas
- 머신러닝
- 부스트코스
- MongoDB
- 주니온
- cnn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Total
- Today
- Yesterday
250x250