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)의 기본입니다.