5. 리스트 (list)

여러 값을 순서대로 담는 상자입니다. 알고리즘에서 가장 많이 쓰는 자료형이에요.

생성과 인덱싱

arr = [10, 20, 30, 40, 50]

print(arr[0])         # 출력: 10   (첫 번째, 번호는 0부터!)
print(arr[2])         # 출력: 30
print(arr[-1])        # 출력: 50   (-1은 맨 뒤)
print(len(arr))       # 출력: 5    (길이/개수)

슬라이싱 — 일부만 잘라내기 [시작:끝]

arr = [10, 20, 30, 40, 50]

print(arr[1:4])       # 출력: [20, 30, 40]   (1번부터 4번 앞까지 = 1,2,3번)
print(arr[:3])        # 출력: [10, 20, 30]   (처음부터 3번 앞까지)
print(arr[2:])        # 출력: [30, 40, 50]   (2번부터 끝까지)

값 추가/변경/삭제

arr = [10, 20, 30]

arr.append(40)        # 맨 뒤에 추가
print(arr)            # 출력: [10, 20, 30, 40]

arr[0] = 99           # 값 변경
print(arr)            # 출력: [99, 20, 30, 40]

arr.pop()             # 맨 뒤 값 꺼내서 삭제
print(arr)            # 출력: [99, 20, 30]

정렬과 뒤집기

arr = [3, 1, 4, 1, 5, 9, 2]

arr.sort()            # 오름차순 정렬 (원본이 바뀜)
print(arr)            # 출력: [1, 1, 2, 3, 4, 5, 9]

arr.sort(reverse=True)  # 내림차순
print(arr)            # 출력: [9, 5, 4, 3, 2, 1, 1]

2차원 리스트 (표/격자)

grid = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]

print(grid[0])        # 출력: [1, 2, 3]   (첫 번째 줄)
print(grid[1][2])     # 출력: 6           (1번 줄의 2번 칸)

# 모든 칸 순회
for row in grid:
    for value in row:
        print(value, end=" ")
# 출력: 1 2 3 4 5 6 7 8 9

💡 리스트는 사실상 모든 문제에서 등장합니다. append, sort, 인덱싱, 슬라이싱은 반사적으로 나올 만큼 익히세요. 2차원 리스트는 지도/미로/격자 문제(BFS/DFS)의 기본입니다.