학습
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)입니다. 리스트와 배열의 차이점, 그리고 셋의 특징을 이해하면 자료구조에 대한 깊은 이해가 가능합니다.