본문으로 건너뛰기

예시 문서

정렬된 목록에서 값 찾기 — 코딩 실습

예시(직접 작성)코딩 실습학습 대상: 파이썬 반복문을 배운 입문자원문 26줄

직접 작성한 예시입니다

화면 구성과 복사되는 HTML·텍스트 형식은 실제 결과와 같고, 내용은 모델이 만든 것이 아닙니다. ‘Notion에 복사’를 눌러 Notion 웹에 붙여넣기를 먼저 시험해 보세요.

이 문서를 만든 원문 보기 · 26줄
# 3주차 · 정렬된 목록에서 값 찾기

정렬된 목록에서는 가운데 값과 비교해 탐색 범위를 절반씩 줄일 수 있습니다.

```python
def binary_search(items, target):
    low, high = 0, len(items) - 1
    while low <= high:
        mid = (low + high) // 2
        if items[mid] == target:
            return mid
        if items[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1
```

low가 high보다 커지면 더 살펴볼 범위가 남지 않았다는 뜻이므로 값이 목록에 없습니다.
목록이 정렬되어 있지 않으면 이 방법은 올바른 위치를 보장하지 않습니다.

```python
scores = [2, 5, 8, 12, 16]
print(binary_search(scores, 12))
print(binary_search(scores, 7))
```

코딩 실습 자료

학습 대상: 파이썬 반복문을 배운 입문자

1 binary_search 직접 구현하기

원문 코드

def binary_search(items, target):
    low, high = 0, len(items) - 1
    while low <= high:
        mid = (low + high) // 2
        if items[mid] == target:
            return mid
        if items[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1

실습 프롬프트

정렬된 정수 목록 items와 찾을 값 target을 받아 위치를 돌려주는 binary_search를 직접 구현하세요. 찾지 못하면 -1을 돌려주고, 반복할 때마다 low·high·mid를 출력해 범위가 줄어드는 과정을 확인하세요.

실습 코드(생성 예제 · 실행하지 않음)

def binary_search(items, target):
    low, high = 0, len(items) - 1
    while low <= high:
        mid = (low + high) // 2
        print(f"low={low} high={high} mid={mid}")
        if items[mid] == target:
            return mid
        if items[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1

print(binary_search([2, 5, 8, 12, 16], 12))

검증 단계

  1. binary_search.py로 저장한 뒤 python binary_search.py를 실행하세요.
  2. 출력된 low·high·mid가 반복마다 남은 범위를 절반으로 줄이는지 확인하세요.
  3. 마지막 줄에 3이 출력되는지 확인하고, 다르면 mid 계산과 비교 방향을 점검하세요.

기대 결과(실행하지 않음)

low=0 high=4 mid=2, low=3 high=4 mid=3 순서로 출력된 뒤 3을 출력합니다. 직접 작성한 예시이며 실행 결과가 아닙니다.

본문 근거: S1 · 원문 줄: 6–16 · 설정 모델: 없음 — 직접 작성한 예시 · 생성: 2026-10-22T00:00:00.000Z

2 없는 값과 빈 목록 확인하기

원문 코드

scores = [2, 5, 8, 12, 16]
print(binary_search(scores, 12))
print(binary_search(scores, 7))

실습 프롬프트

목록에 없는 값 7과 빈 목록 []을 넣었을 때 binary_search가 -1을 돌려주는지 assert로 확인하는 코드를 작성하세요.

실습 코드(생성 예제 · 실행하지 않음)

scores = [2, 5, 8, 12, 16]
assert binary_search(scores, 7) == -1
assert binary_search([], 3) == -1
print("없는 값 처리 확인 완료")

검증 단계

  1. 앞 단계의 binary_search 정의 아래에 이 코드를 붙여 실행하세요.
  2. AssertionError 없이 마지막 문장이 출력되는지 확인하세요.

기대 결과(실행하지 않음)

"없는 값 처리 확인 완료"가 출력됩니다. 직접 작성한 예시이며 실행 결과가 아닙니다.

본문 근거: S1 · 원문 줄: 23–25 · 설정 모델: 없음 — 직접 작성한 예시 · 생성: 2026-10-22T00:00:00.000Z

내 강의 자료로 만들어 보세요

원문을 넣고 결과 형식을 고르면 같은 구조의 문서가 만들어집니다. 로그인 없이 시작합니다.