배열

김뉴오·2025년 4월 22일

자료구조

목록 보기
1/9
post-thumbnail

Arrays(배열)

배열은 같은 타입의 데이터가 여러 개 있을 때 사용하는 자료구조입니다. 배열은 하나의 값을 저장하는 변수가 아니라 묶음 단위로 값을 저장하는 형태입니다. 배열의 각 값은 '원소'라고 하며, 이 원소들은 인덱스(0부터 시작)를 부여받습니다.

메모리 종류

  • 비휘발성 메모리
    • 사라지지 않는 메모리(예: 하드디스크)
  • 휘발성 메모리
    • 사라지는 메모리(예: RAM, R은 Random Access)

배열의 최대 크기는 메모리 크기에 따라 결정되며, 이 메모리에 배열이 들어갑니다.


시간 복잡도

배열의 시간 복잡도는 데이터를 찾거나 수정하는 데 걸리는 시간입니다.

  • 읽기(Read)
    • 배열에서 값을 읽는 것은 O(1)입니다. 예: tmp = a[i]
  • 쓰기(Write)
    • 배열에 값을 쓰는 것은 O(1)입니다. 예: a[i] = tmp
  • 특정 값 찾기
    • 배열 안에서 특정 값을 찾으려면 O(N) 시간이 걸립니다. (배열의 크기만큼 반복)
  • 중간에 값 추가/삭제
    • 배열 중간에 값을 추가하거나 삭제하는 데는 O(N) 시간이 걸립니다.

공간 복잡도

배열은 length = N개의 원소와 Type의 크기(M, 예: int는 4byte)를 가집니다. 배열의 저장 공간 크기는 N * M이며, 이는 O(N) 공간 복잡도를 가집니다.


Python 배열

파이썬에서는 배열을 리스트(list)튜플(tuple)로 구현할 수 있습니다.

  • List(리스트)
    • 뮤터블(mutable) 자료형으로 원소를 변경할 수 있습니다.
    • 예: list1 = [1] * 3[1, 1, 1]
  • Tuple(튜플)
    • 이뮤터블(immutable) 자료형으로 원소를 변경할 수 없습니다.
    • 예: tuple1 = (1, 2, 3)

슬라이스(Slice)

  • 리스트에서 특정 구간의 원소를 추출할 때 사용합니다.
    예: list1[1:5][2, 3, 4, 5], list1[:5:2][1, 3, 5]

중요!

파이썬에서는 변수에 다른 값을 대입할 때 값의 참조 번호가 변경됩니다. 이를 통해 참조복사를 구분할 수 있습니다.


용어 정리

  • Immutable(이뮤터블)
    • 값을 변경할 수 없는 자료형 (예: 수, 문자열, 튜플)
  • Mutable(뮤터블)
    • 값을 변경할 수 있는 자료형 (예: 변수, 리스트, 딕셔너리, 집합)
  • 등가성(Equality)
    • 두 객체의 값이 같으면 a = b
    • 예: 두 객체가 동일한 값일 때 a == b
  • 동일성(Identity)
    • 두 객체가 값과 식별 번호가 같으면 a is b
    • 예: 두 객체가 메모리에서 같은 위치를 가리킬 때 a is b
  • Script(스크립트)
    • 한 줄씩 실행되는 코드 파일(인터프리터 방식으로 실행)

배열 메소드

메소드설명예제
append(x)리스트 끝에 요소 추가arr.append(5)
extend(iterable)리스트 확장(병합)arr.extend([4, 5])
insert(i, x)i번째 위치에 x 삽입arr.insert(2, 10)
remove(x)x 값을 삭제arr.remove(3)
pop(i)i번째 요소 제거 후 반환arr.pop(1)
clear()리스트 모든 요소 삭제arr.clear()
index(x)x의 첫 번째 위치 반환arr.index(2)
count(x)x의 개수 반환arr.count(2)
sort()오름차순 정렬arr.sort()
sorted(list)정렬된 새 리스트 반환sorted(arr)
reverse()리스트 순서 뒤집기arr.reverse()
copy()리스트 복사new_arr = arr.copy()
' '.join(list)리스트 → 문자열'-'.join(arr)
split(separator)문자열 → 리스트'1,2,3'.split(',')
len(list)리스트 길이 반환len(arr)
max(list)최댓값 구하기max(arr)
min(list)최솟값 구하기min(arr)
sum(list)합계 구하기sum(arr)
profile
Bello! NewOld velog~

0개의 댓글