1. 배열이란 ? 개념과 특징 정리
- 배열의 경우 처음에 선언 시에 크기까지 같이 선언을 하기 때문에 크기가 고정적이며
- 중간 값에 대한 삭제 수정등이 발생 할 경우 해당 데이터 뒤에 있는 데이터들을 앞으로 당겨야 하는 과정에서 시간이 오래걸림
예시 : [1,2,3,4,5] -> (3삭제 시 ) [1,2,x,4,5] -> [1,2,4,5] 앞으로 당겨줘야하므로 시간 걸림
- 동일 자료형 + 메모리 구조가 연속적 공간임 -> 인덱스(0번째 , 1번째)를 통해 빠르게 값을 찾을 수 있음 (그러므로 키 값을 지정할 수 없음)
2. 리스트란 ? 개념과 특징 정리
- 리스트의 경우 리스트 선언만 진행 (크기에 대한 선언을 하지 않음 -> 크기가 가변)
- 중간 값이 삭제나 수정 등이 발생해도 해당 값과 연결된 부분만 잘라가기 떄문에 앞으로 당기는 과정이 없음 -> 시간이 오래 걸리지 않음
- 단, 데이터 접근에 대해서 단순히 인덱스(0번째, 1번째) 가 아닌 포인터를 통해 연결되기 때문에 값을 찾는게 상대적으로 시간이 더 걸림
배열과 리스트, 언제 어떤 걸 써야 할까?

요약을 하면 데이터 변경이 많지 않은 경우 배열이 유리하고 데이터 변경이 많이 발생하는 경우 리스트를 사용하는 것이 속도면에서 유리하다.
배열이 유리한 경우
- 들어올 데이터가 고정적인 경우
- 한번 정해진 데이터에서 추가, 수정 및 삭제 기능을 요구하지 않는 경우
리스트가 유리한 경우
- 로그 데이터 같이 데이터가 지속적으로 들어오는 경우
- 값의 수정이 자주 발생하는 경우
예시 코드
import time
from collections import deque
N = 100_000 # 테스트 데이터 개수
start = time.time()
array = []
for i in range(N):
array.insert(0, i)
end = time.time()
print(f"배열 삽입 시간: {end - start:.4f}초")
start = time.time()
linked_list = deque()
for i in range(N):
linked_list.appendleft(i)
end = time.time()
print(f"리스트 삽입 시간: {end - start:.4f}초")
기술 면접 예시
- 배열과 리스트의 차이를 설명해보세요.
- 리스트에서 특정 값에 접근하려면 왜 느릴까요?
- 중간에 값을 자주 삽입해야 할 때 어떤 자료구조가 적합할까요?
요약
- 배열은 이미 정해진 크기가 존재하지만 리스트는 가변적임
- 배열의 경우 순서를 인덱스(숫자)로 받기에 숫자로 찾아가면 되는 반면 리스트의 경우 포인터를 통해 연결되기 때문에 초기 데이터 접근의 경우 배열이 더 유리하다
- 데이터의 추가, 수정, 삭제와 같은 변형이 존재하는 경우 리스트가 유리하지만 고정적인 경우 데이터를 빨리 찾는 배열이 더 유리하다.
'CS + WEB' 카테고리의 다른 글
| 프로세스(Process) vs 스레드(Thread) 차이 (4) | 2025.06.16 |
|---|---|
| 스택 (Stack) vs 큐 (Queue) 차이 (1) | 2025.06.15 |
| [WEB] CORS 에러란 ? .. (0) | 2025.02.27 |
| 지역 변수와 멤버 변수 (3) | 2024.01.21 |
| 컴퓨터가 음수와 양수를 표현하는 방법, 2의 보수 (1) | 2024.01.18 |