PY-L3-001 / 탐색과 정렬
이진 탐색 경계
중급문제
오름차순 정수 리스트 values와 정수 target을 받습니다. target의 첫 인덱스를 반환하고 없으면 -1을 반환하세요. 선형 탐색 대신 이진 탐색을 사용해 보세요.
solve(*args) 함수에서 값을 반환하세요. print 출력은 정답 판정에 사용하지 않습니다.
입출력 예시
예제 1
입력: [[1,2,2,4],2] 반환: 1
예제 2
입력: [[],3] 반환: -1
힌트
반열린 구간 [lo, hi)에서 왼쪽 경계를 찾습니다.
해설·정답 보기
같은 값일 때 hi를 줄여 첫 인덱스로 수렴시킵니다. 결과 정확성을 판정하며 시간복잡도 준수는 해설의 학습 목표입니다.
def solve(values, target):
lo, hi = 0, len(values)
while lo < hi:
mid = (lo + hi) // 2
if values[mid] < target:
lo = mid + 1
else:
hi = mid
return lo if lo < len(values) and values[lo] == target else -1solution.py결과 비교
코드는 이 브라우저에 자동 저장돼요.
풀이 결과
코드를 작성하고 채점하기를 눌러보세요.
학습용으로 제공된 조건을 확인해요. 알고리즘 사용 방식·설계 의도는 해설과 함께 비교해보세요.