Python

[Python] 완전탐색 & 이분탐색

SangRok Jung 2022. 10. 10. 00:34
반응형

완전탐색 & 이분탐색


 

▶ 탐색이란

많은 데이터 속에서 원하는 데이터를 찾는것.

웹에서 특정 문자를 가진 웹 문서를 찾거나 신용카드나 버스카드 결제시 탐색 알고리즘을 사용한다.

 

 

 

 

▶ 탐색의 종류

 

 

 

 

 

 

 

완전탐색


Brute Force라고도 부르며 컴퓨터의 빠른 계산 성능을 활용하여 가능한 모든 경우의 술르 탐색하는 효율성 관점에서 최악의 방법.

 

 

 

▶ 완전탐색 구현방법

  • 반복문
  • 재귀함수
    • 동저 계획법
    • 백트래킹
    • 탐욕법

 

 

 

▷ 완전탐색의 반복문 구현

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)

 

 

 

 

 

이분탐색


  • 이진검색이라고도 표현.
  • 오름차순으로 정렬된 리스트에서 특정 값의 위치를 찾는 알고리즘 중간의 값을 선택하여 찾고자 하는 값과 크고 작음을 비교하는 방법.
  • UPDOWN 게임의 원리와 비슷.

 

 

 

▷ 트럼프 카드를 찾는 이분탐색 코드.

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
반응형

'Python' 카테고리의 다른 글

[Python] Coding Test (카드2)  (0) 2022.10.10
[Python] Coding Test (괄호)  (0) 2022.10.10
[Python] Coding Test (크레인 인형뽑기 게임)  (1) 2022.10.08
[Python] Stack & Queue  (0) 2022.10.08
[Python] Pivot Table  (0) 2022.10.06