Array (배열):
배열은 동일한 자료형의 요소들을 순서대로 저장하는 자료 구조입니다. 각 요소는 인덱스를 통해 접근 가능하며, 메모리 상에서 연속적으로 할당됩니다. 배열의 크기는 생성할 때 고정되며, 크기를 동적으로 변경하기 어렵습니다.
사용 방법:
# Python에서의 배열 사용 예시
my_array = [1, 2, 3, 4, 5]
print(my_array[2]) # 인덱스를 사용하여 배열 요소에 접근
배열의 장점:
- 빠른 임의 접근(Random Access): 인덱스를 통한 직접적인 접근으로 요소에 빠르게 접근할 수 있습니다.
- 고정된 크기: 배열은 고정된 크기를 가지므로 메모리 사용이 효율적입니다.
배열의 단점:
- 크기 변경 어려움: 배열의 크기를 동적으로 변경하기 어렵기 때문에 필요 이상의 메모리를 할당할 수 있습니다.
- 삽입 및 삭제 시 비효율적: 중간에 요소를 추가하거나 삭제할 때 다른 요소들을 이동시켜야 하므로 비효율적입니다.
LinkedList (연결 리스트):
연결 리스트는 각 노드가 데이터와 다음 노드를 가리키는 링크(포인터)로 이루어진 자료 구조입니다. 각 노드는 순서대로 저장되며, 메모리 상에서 불연속적으로 할당됩니다. 연결 리스트는 크기를 동적으로 조절할 수 있습니다.
사용 방법:
# Python에서의 연결 리스트 사용 예시
class Node:
def __init__(self, data):
self.data = data
self.next = None
# 연결 리스트 생성 및 노드 추가
head = Node(1)
head.next = Node(2)
head.next.next = Node(3)
연결 리스트의 장점:
- 크기 변경 용이: 노드를 동적으로 추가하거나 제거할 수 있어 크기를 동적으로 조절할 수 있습니다.
- 삽입 및 삭제 효율적: 중간에 요소를 추가하거나 삭제할 때 다른 요소들을 이동시킬 필요가 없어 효율적입니다.
연결 리스트의 단점:
- 임의 접근이 느림: 특정 인덱스에 직접 접근하기 어렵기 때문에 탐색에 시간이 더 소요됩니다.
- 추가적인 메모리 사용: 각 노드는 데이터와 다음 노드를 가리키는 링크로 구성되어 있어 메모리 사용이 더 많을 수 있습니다.
어떻게 사용하는지:
- Array 사용 예시:
- 데이터의 크기가 고정되어 있고 빠른 접근이 필요한 경우에 적합합니다.
- 정렬된 데이터나 임의의 데이터에 빠르게 접근할 때 활용됩니다.
- LinkedList 사용 예시:
- 데이터의 크기가 동적으로 변경되는 경우에 적합합니다.
- 데이터의 삽입 또는 삭제가 빈번하게 발생하는 경우에 유용합니다.
- 데이터의 순서가 자주 변경되는 경우에도 효율적입니다.
'면접준비' 카테고리의 다른 글
세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요. (0) | 2024.01.29 |
---|---|
AWS S3, EC2를 사용하는 이유와 사용 경험에 대해서 답변해주세요. (0) | 2024.01.29 |
테스트코드에 대해서 아는대로 설명해주시고 활용 경험에 대해서 답변해주세요. (0) | 2024.01.26 |
쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요. (0) | 2024.01.25 |
멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요. (0) | 2024.01.25 |