728x90
함께 푼 문제
[백준 / 이진 탐색] 10815 : 숫자 카드 (python)
문제 설명 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지
delicious-kimchi.tistory.com
이진 탐색
데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘.
대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다.
- 시간 복잡도 : O(logN)
- 데이터가 정렬돼 있어야 함
파이썬 구현
A = [4, 8, 10, 5, 2, 7, 6, 3, 9, 1]
A.sort() # **데이터 정렬**
start = 0
end = len(A) - 1
find = 2 # 찾을 값
while start <= end:
mid = (start + end) // 2
if A[mid] < find:
start = mid + 1
elif A[mid] > find:
end = mid - 1
else:
print(A[mid]) # 2
break # 값 찾으면 종료
반응형
'알고리즘 > Do it! 알고리즘 코딩테스트 (파이썬)' 카테고리의 다른 글
[12, 13일차] 07 정수론 (0) | 2024.04.08 |
---|---|
[10, 11일차] 06 그리디 (0) | 2024.04.04 |
[8일차] 05 탐색 : 05-1 깊이 우선 탐색, 05-2 넓이 우선 탐색 (0) | 2024.04.01 |
[7일차] 04 정렬 : 04-5 병합 정렬, 04-6 기수 정렬 (1) | 2024.04.01 |
[6일차] 04 정렬 : 04-3 삽입 정렬, 04-4 퀵 정렬 (0) | 2024.04.01 |