#재귀함수 이진탐색
def binary_search(array,target,start,end):
if start>end:
return None
mid=(start+end)//2
# 찾은 경우 중간점 인덱스 반환
if array[mid]==target:
return mid
# 중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인
elif array[mid]>target:
return binary_search(array,target,start,mid-1)
# 중간점의 값보다 찾고자하는 값이 큰 경우 오른쪽 확인
else:
return binary_search(array,target,mid+1,end)
############################################################
# 입력받기
n,target=list(map(int,input().split()))
array=list(map(int,input().split()))
# 이진탐색 함수 수행
result=binary_search(array,target,0,n-1)
if result==None:
print("원소 존재하지 않음")
else:
print(result+1)
#반복문 이진탐색
def binary_search(array,target,start,end):
while start<=end:
mid=(start+end)//2
# 찾은 경우 중간점 인덱스 반환
if array[mid]==target:
return mid
# 중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인
elif array[mid]>target:
end=mid-1
# 중간점의 값보다 찾고자하는 값이 큰 경우 오른쪽 확인
else:
start=mid+1
retun None
############################################################
# 입력받기
n,target=list(map(int,input().split()))
array=list(map(int,input().split()))
# 이진탐색 함수 수행
result=binary_search(array,target,0,n-1)
if result==None:
print("원소 존재하지 않음")
else:
print(result+1)
** 코딩테스트 시 입력받는 시간을 줄이는 코드
import sys
#하나의 문자열 데이터 입력받기
input = sys.stdin.readline().rstrip()
[알고리즘] 이코테 - 최단경로 (0) | 2024.01.17 |
---|---|
[알고리즘] 이코테 - 다이나믹 프로그래밍(동적 계획법) (0) | 2024.01.11 |
[알고리즘] 이코테 - 정렬 (0) | 2024.01.09 |
[알고리즘] 이코테 - DFS / BFS (0) | 2024.01.06 |
[알고리즘] 이코테 - 구현 (0) | 2024.01.05 |