바위타는 두루미
10.5 드문드문 탐색 본문
728x90
문제
빈 문자열이 섞여 있는 정렬된 문자열 배열이 주어졌을때, 특정 문자열의 위치르 찾는 메서드를 작성하라.
입력 :"ball' , ["at", "" , "". "", "ball", "", "", "car", "" , "", "", "dad", "", ""]
해결법
빈 문자열이 없었다면 그냥 이진 탐색을 적용하면 될것이다.
이진 탐색을 적용하면서 빈 문자열에 대한 처리를 해주면 해결이 가능할 것이다.
mid가 빈 문자열의 위치한 경우 가장 가까운 word의 위치를 mid로 변경해주고, 이진 탐색을 진행해 나가면 될 것같다.
def Solution(list, target):
if list is None or target=="" or target ==None :
return -1
return findTarget(list, target, left, right)
def findTarget(list, target, left, right):
if left > right :
return -1
mid = (left+right)//2
if list[mid] =="":
l,r = mid-1, mid+1
while True:
if left > l and r > right :
return -1
elif right >= r and list[r] != "":
mid = r
break
elif left <= l and list[l] !="":
mid = l
break
else :
right +=1
left +=1
if list[mid] == target:
return mid
elif target < list[mid] :
return findTarget(list, target, left, mid -1)
elif list[mid] < target :
return findTarget(list, tatget, mid+1, right)
'Study > Interview준비' 카테고리의 다른 글
10.7 빠뜨린 정수 (0) | 2019.08.06 |
---|---|
10.6 큰 파일 정렬 (0) | 2019.08.06 |
10.4 크기를 모르는 정렬된 원소 탐색 (0) | 2019.08.06 |
10.3 회전된 배열에서 검색 (0) | 2019.08.06 |
10.2 Anagram 묶기 (0) | 2019.08.06 |
Comments