DSData StructuresPython learning path
0 / 12 완료
LESSON 01

배열과 선형 탐색

연속된 데이터를 순서대로 다루는 가장 기본적인 도구

왜 배열과 선형 탐색을 쓸까요?

데이터를 여러 개 저장할 때 가장 먼저 떠올릴 수 있는 구조입니다. 인덱스로 즉시 접근할 수 있고 순회 비용을 예측하기 쉬워, 다른 자료구조와 알고리즘을 이해하는 기준점이 됩니다.

LIFE EXAMPLE

생활 속에서 먼저 이해해 볼까요?

코드를 생각하지 말고, 아래 상황이 어떤 순서로 움직이는지만 따라가 보세요.

현실 예시 1

아파트 우편함

101호 우편함을 찾을 때는 첫 칸부터 이름을 읽지 않고, 호수 번호가 붙은 칸으로 바로 갑니다.

자료구조와 연결하면배열도 인덱스 번호를 알면 원하는 위치를 즉시 읽습니다.
현실 예시 2

음악 재생 목록

세 번째 노래를 누르면 바로 재생되지만, 제목만 기억하면 목록을 위에서부터 찾아야 합니다.

자료구조와 연결하면번호로 접근할 때와 값으로 탐색할 때의 차이를 그대로 보여줍니다.

실무에서는 이렇게 씁니다

코딩 테스트의 장난감 예제를 넘어, 실제 시스템에서 같은 원리가 어디에 숨어 있는지 연결해 보세요.

01

API 응답 목록

상품·게시글 목록을 받은 순서대로 렌더링하고 페이지 단위로 잘라 보여줍니다.

02

로그·시계열

시간 순서로 쌓인 요청량이나 센서 값을 한 번 순회하며 통계를 냅니다.

03

ML 배치

샘플을 인덱스로 접근하고 일정 크기의 미니배치로 묶습니다.

04

스프레드시트 행

주문이나 고객 목록을 행 순서대로 훑으며 조건에 맞는 데이터를 찾습니다.

05

음원 샘플

시간순으로 저장된 진폭 값을 인덱스로 읽어 파형을 재생하고 편집합니다.

어떤 원리로 동작하나요?

파이썬 리스트는 원소의 참조를 연속된 공간에 보관하는 동적 배열입니다. items[i]는 시작 위치에서 i만큼 이동하므로 O(1)이지만, 값으로 찾을 때는 앞에서부터 확인해야 하므로 최악의 경우 O(n)입니다.

핵심 연산과 비용

연산Python 표현시간
인덱스 접근arr[i]O(1)
값 탐색x in arrO(n)
끝에 추가append평균 O(1)
중간 삽입/삭제insert / pop(i)O(n)
STEP BY STEP

선형 탐색으로 7 찾기

  1. 1
    시작numbers = [4, 2, 7, 1], target = 7
  2. 2
    i = 0numbers[0]은 4 → 다르므로 계속
  3. 3
    i = 1numbers[1]은 2 → 다르므로 계속
  4. 4
    i = 2numbers[2]는 7 → 인덱스 2 반환

⚠ 자주 하는 실수

  • pop(0)을 반복하면 나머지 원소를 계속 당겨 O(n²)이 될 수 있습니다.
  • 정렬되지 않은 배열에 이진 탐색을 적용하면 결과를 신뢰할 수 없습니다.
  • 순회 중 리스트를 직접 삭제하면 인덱스가 밀려 원소를 건너뛸 수 있습니다.