문제 :
오름차순인 숫자 nums 배열과 찾아야할 target을 인자로 주면,
target이 몇 번째 index인지 return 해주세요.
Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
설명: 찾지 못하면 -1로 return 해주세요.
nums 배열에 있는 요소는 서로 중복된 값이 없습니다
def search(nums, target):
pos1 = 0 #pos1은 처음 부분
pos2 = len(nums) //2 #pos2는 중앙부분
pos3 = len(nums) -1 #pos3은 끝부분
while nums[pos2] != target: #타켓을 찾을때까지 무한 루프
if nums[pos2] > target: #타켓이 중앙값보다 작다면 끝부분을 땡겨오고
pos3 = pos2 -1
pos2 = (pos1 + pos3)//2
else: # 타켓이 중앙값보다 크다면 처음부분을 중앙부분으로 업데이트
pos1 = pos2 + 1 # 다시 중앙 포지션 지정
pos2 = (pos1+pos3)//2
if pos1 > pos3: # 만약 이렇게 계속하다가 어느순간 list의 처음이 끝보다 커지는 경우가 발생하는데 이때는 못찾은 거니 -1을 반환하면 된당!
return -1
return pos2