Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 이진탐색 #나무 자르기
- 오픽점수잘받는방법
- opic
- 탑다운
- 메모이제이션
- 주석
- XML
- English
- 오픽
- ㅂ
- XML주석
- 바텀업
- 디피
- 오픽공부법
- 오픽가격
- dp
- topdown
- fibo
- 안드로이드주석
- 피보나치수열
- 다이나믹프로그래밍
- dynamicProgramming
- 오픽노잼
- 이진탐색
- 안드로이드
- stack 스택
- 영어말하기
- 오픽노잼공부방법
- 영어회화
Archives
RUBY
[이론] 이진탐색 / 파라메트릭서치 본문
이진탐색
- 반으로 쪼개면서 탐색하기
: 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터를 찾는 과정
- 시간복잡도 O(logn)
- 처리해야할 데이터의 개수나 값이 1000만 이상이면 이진탐색 떠올리자
- 구현
#10개의 수입력했을 때, 7이 몇번째 있는지 찾기
10 7
1 3 5 7 9 11 13 15 17 19
1) 재귀함수
#재귀함수로 구현한 이진 탐색 소스코드
#
import sys
sys.stdin = open("input.txt","r")
def binary_search(arr,target,start,end):
if start>end:
return None
mid=(start+end)//2
#목표값을 찾은 경우
if arr[mid] == target:
return mid
#목표값이 중간값보다 작은 경우
elif arr[mid]>target:
return binary_search(arr,target,start,mid-1)
#목표값이 중간값보다 큰 경우
elif arr[mid]<target:
return binary_search(arr,target,mid+1,end)
n,target=list(map(int,input().split()))
arr=list(map(int,input().split()))
result=binary_search(arr,target,0,n-1)
if result==None:
print("원소가 존재하지 않음")
else:
print("원소가 %d번째 존재함" %(result+1))
2) 반복문
#반복문으로 구현한 이진탐색
#
import sys
sys.stdin = open("input.txt","r")
def binary_search(arr,target,start,end):
while start<=end:
mid=(start+end)//2
#목표값을 찾은경우
if arr[mid]==target:
return mid
#목표값이 중간값보다 작은 경우
elif arr[mid]>target:
end=mid-1
#목표값이 중간값보다 큰 경우
else:
start=mid+1
return None
n,target=list(map(int,input().split()))
arr=list(map(int,input().split()))
result=binary_search(arr,target,0,n-1)
if result==None:
print("원소가 존재하지 않음")
else:
print("원소가 %d번째 존재함" %(result+1))
파라메트릭 서치(parametric search)
: 최적화문제를 결정문제(예 혹은 아니오로 답하는문제)로 해결하는 기법
- 원하는 조건을 만족하는 가장 알맞은 값을 찾는 문제
- 범위내에서 조건을 만족하는 가장 큰 값을 찾으라는 최적화 문제이면, 이진탐색으로 결정문제를 해결하면서 범위를 좁혀간다
연관포스트 : hiruby.tistory.com/7
'PS > This' 카테고리의 다른 글
전보 (0) | 2020.09.25 |
---|---|
[이론] 구간 합(Prefix sum) (0) | 2020.09.19 |
[백준] 최종 순위 (0) | 2020.09.15 |
만들 수 없는 금액 (0) | 2020.09.13 |
[카카오] 무지의 먹방 라이브 (0) | 2020.09.12 |
Comments