Data Structure/Concepts

[Python] 자료구조(Data Structure) / 1. 배열(Array)

genie0000 2025. 4. 24. 00:25

형구조


1. 배열(array)

같은 타입의 데이터를 일정한 순서로 저장하는 자료구조이다.

인덱스(index)로 접근할 수 있으며, 인덱스는 0부터 시작


배열의 구조

# 예시 (Python)
arr = [10, 20, 30, 40]
print(arr[0])  # 10
print(arr[2])  # 30
인덱스(Index) 0 1 2 3
값(Value) 10 20 30 40
  • 고정된 크기를 가지며, C나 Java의 기본 배열은 초기화할 때 크기를 지정해야 한다.
  • Python의 리스트는 유사 배열이지만 동적으로 크기가 변한다.

 

 배열의 특징

  • 배열에서는 임의접근(random access)이 가능하다. 즉 내가 원하는 원소에 바로 접근하는 것이 쉽다.
  • 하지만 정렬되어 있는 데이터의 n번째 데이터를 삭제하는 경우 그 뒤에 있던 데이터들이 모두 한 칸씩 앞으로 이동을 하게 된다. 즉 원소 하나를 추가하거나 삭제하기 위해서 데이터 이동 횟수가 많아지게 되는 오버헤드(overhead)가 발생할 수 있다.
장점 단점
- 각 인덱스로 빠르게 접근 가능 (O(1))
- 데이터가 연속적으로 저장되어 캐시 효율이 높음
- 삽입/삭제 시 비효율적 (O(n))
- 고정 크기(일반 배열은 크기 변경 불가)

 

 

배열의 시간 복잡도

연산 설명 시간 복잡도
접근 arr[i] O(1)
검색 값을 찾을 때 (arr[i] == x) O(n)
삽입 중간에 넣으면 뒤 각 요소들 이동 필요 O(n)
삭제 중간 요소 삭제 시 이동 발생 O(n)

 

 

 언어별 배열 예시

  • Python
arr = [1, 2, 3]
arr.append(4)  # [1, 2, 3, 4]
arr.pop()      # [1, 2, 3]
  • C++
#include <vector>
vector<int> arr = {1, 2, 3};
arr.push_back(4); // [1, 2, 3, 4]

 

 

배열 관련 문제 예시 (Python)

예제: 평균 구하기

arr = [1, 2, 3, 4, 5]
avg = sum(arr) / len(arr)
print(avg)  # 3.0

 

예제: 최대값 찾기

arr = [10, 20, 5, 3]
max_val = max(arr)
print(max_val)  # 20

 

 

 배열을 배워야 하는 이유

  • 배열은 모든 자료구조의 기초로 리스트, 큐, 스택, 해시 테이블, 힙, 트리 같은 자료구조들이 배열을 기반으로 구현되기도 한다.
  • 또한 알고리즘 문제 풀이 시 배열을 자주 다루게 된다. (ex. 정렬, 탐색, 슬라이딩 윈도우, 투 포인터 등)

 

 

 

 

 

 


자료구조(Data Structure) / 연결 리스트(Linked List) 내용

https://genie0000.tistory.com/18

 

[Python] 자료구조(Data Structure) / 2. 연결 리스트(Linked List)

선형구조2. 연결 리스트 (Linked List)메모리상 연속되지 않은 공간에 데이터를 저장하고,각 데이터가 다음 데이터의 주소(포인터)를 함께 저장하여 연결하는 구조이다.✅ 연결 리스트 요소1. 노드(N

genie0000.tistory.com

 

 

 

 


📌 아직 배우는 중이라 부족한 부분이 있을 수 있습니다.
혹시 잘못된 내용이나 더 나은 방법이 있다면 알려주세요 🙏
감사합니다! 😄