바위타는 두루미

10.5 드문드문 탐색 본문

Study/Interview준비

10.5 드문드문 탐색

DoRoMii 2019. 8. 6. 22:31
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