-
[💕 LeetCode Python] 704. Binary SearchAlgorithm/1일 1코테 2020. 10. 26. 14:27반응형
리트코드
[ 704. Binary Search ]
문제 및 문제설명
leetcode.com/problems/binary-search/submissions/
내가 제출한 답
def search(self, nums: List[int], target: int) -> int: if any(i == target for i in nums): # target이랑 같은 값이 있으면 return nums.index(target) #해당 인덱스 출력 else: #없으면 return -1
하지만 실제 코테에서 이진검색을 요구했을 때 이렇게 풀면 감점당할 수 있다고 한다.
이진검색을 활용한 풀이
#이진검색 1 - 재귀 def search(self, nums: List[int], target: int) -> int: def binary_search(left, right): if left <= right: mid = (left+right)//2 if nums[mid] < target: return binary_search(mid+1, right) elif nums[mid] > target: return binary_search(left, mid-1) else: return mid else: return -1 return binary_search(0, len(nums)-1)
# 이진검색2 - for문 def search(self, nums: List[int], target: int) -> int: left, right = 0, len(nums)-1 while left <= right: mid = (left+right)//2 if nums[mid] < target: left = mid+1 elif nums[mid] > target: right = mid-1 else: return mid return -1
# 이진검색 - bisect 패키지 사용 def search(self, nums: List[int], target: int) -> int: index = bisect.bisect_left(nums, target) if index < len(nums) and nums[index] == target: return index else: return -1
# 이진 검색을 사용하지 않는 인덱스 풀이 def search(self, nums: List[int], target: int) -> int: try: return nums.index(target) except ValueError: return -1
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[🤷♀️ LeetCode Python] 167. Two Sum 2 - Input array is sorted (0) 2020.10.26 [💕 LeetCode Python] 349. Intersection of Two Arrays (0) 2020.10.26 [🤷♀️ 프로그래머스 Python] 기능개발 (0) 2020.10.25 [💕 프로그래머스 Python] 프린터 (0) 2020.10.25 [💕 프로그래머스 Python] 주식가격 (0) 2020.10.24