IMCAT.DEV
로그인 가입
Scala 입문 자료구조

Scala 기본 자료구조: 리스트 (List)

Scala 기본 자료구조: 리스트 (List) — 초급

기본 자료구조: 리스트 (List)

1. 도입 (왜 배워야 하는가)

리스트(List)는 프로그래밍에서 가장 기본적이고 중요한 자료구조 중 하나입니다. 실무에서는 데이터를 효율적으로 저장하고, 필요한 경우 쉽게 접근하거나 수정할 수 있는 방법을 제공하기 때문에 리스트의 이해는 필수적입니다. 예를 들어, 쇼핑몰에서 고객의 장바구니에 담긴 상품을 관리하거나, 사용자 정보를 저장할 때 리스트를 활용합니다. 만약 리스트를 모른다면, 데이터를 저장하고 처리하는 데 많은 시간과 노력을 들여야 하며, 비효율적인 코드를 작성하게 될 것입니다.

2. 핵심 개념 설명

리스트는 순서가 있는 데이터의 집합으로, 같은 타입의 데이터를 담을 수 있는 자료구조입니다.

  • 정적 배열: 고정된 크기를 가진 데이터 집합으로, 초기화 후 크기가 변하지 않습니다.
  • 동적 배열: 필요에 따라 크기를 늘릴 수 있는 배열입니다. Scala의 리스트는 이러한 동적 배열의 한 예입니다.
  • 관련 용어 정리

    용어설명
    리스트(List)순서가 있는 데이터의 집합
    요소(Element)리스트에 포함된 각각의 데이터 항목
    인덱스(Index)요소의 위치를 나타내는 정수

    리스트를 비유하자면, 책꽂이에 꽂혀 있는 책과 같습니다. 책꽂이의 각 칸은 인덱스 역할을 하며, 각 책은 리스트의 요소입니다. 책을 추가하거나 제거할 수 있지만, 각 책의 순서는 유지됩니다.

    3. 기본 코드 예제

    아래는 Scala에서 리스트를 생성하고 사용하는 기본적인 예제입니다.

    // 리스트 생성
    val fruits = List("사과", "바나나", "오렌지")
    
    // 리스트 출력
    println(fruits)
    
    // 첫 번째 요소 접근
    val firstFruit = fruits(0)
    println(firstFruit)

    실행 결과

    List(사과, 바나나, 오렌지)
    사과
  • val fruits = List("사과", "바나나", "오렌지"): 리스트를 생성합니다. 여기서 fruits 변수는 세 개의 문자열 요소를 갖는 리스트입니다.
  • println(fruits): 생성한 리스트를 출력합니다. 리스트의 구조가 보여집니다.
  • val firstFruit = fruits(0): 첫 번째 요소를 인덱스를 사용하여 접근하고, firstFruit 변수에 저장합니다.
  • println(firstFruit): 첫 번째 요소인 "사과"를 출력합니다.
  • 4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니

    쇼핑몰에서 고객이 장바구니에 담은 상품을 리스트로 관리할 수 있습니다.

    // 장바구니 생성
    var cart = List[String]()
    
    // 상품 추가
    cart = cart :+ "신발"
    cart = cart :+ "모자"
    
    // 장바구니 출력
    println(cart)

    상황 설명: 고객이 신발과 모자를 장바구니에 추가할 때마다 리스트에 추가할 수 있습니다.

    예제 2: 학생 성적 관리

    학생들의 성적을 리스트로 관리하는 예입니다.

    // 학생 성적 리스트
    val scores = List(88, 92, 76, 85)
    
    // 평균 성적 계산
    val averageScore = scores.sum / scores.length
    println(s"평균 성적: $averageScore")

    상황 설명: 학생들의 성적을 리스트에 저장하고, 평균 성적을 계산하여 출력할 수 있습니다.

    5. 흔한 실수와 주의사항

    실수 1: 인덱스 범위 초과

    val fruits = List("사과", "바나나", "오렌지")
    println(fruits(3)) // IndexOutOfBoundsException

    문제: 인덱스는 0부터 시작하므로, 범위를 초과하는 인덱스를 사용하면 오류가 발생합니다.

    실수 2: 불변 리스트의 이해 부족

    val fruits = List("사과", "바나나")
    fruits(0) = "포도" // 오류 발생

    문제: Scala의 리스트는 불변(immutable)입니다. 요소를 직접 수정할 수 없으며, 새로운 리스트를 생성해야 합니다.

    6. 정리

  • 리스트는 순서가 있는 데이터 집합으로, 같은 타입의 데이터를 저장할 수 있습니다.
  • 인덱스를 통해 각 요소에 접근할 수 있으며, 불변성을 유지합니다.
  • 실무에서 리스트는 데이터 관리, 성적 계산 등 다양한 용도로 사용됩니다.

다음에 학습하면 좋은 주제는 배열(Array)와 셋(Set)입니다. 리스트와 배열의 차이점, 그리고 셋의 특징을 이해하면 자료구조에 대한 깊은 이해가 가능합니다.