본문 바로가기

면접준비

Array, LinkedList에 대해 설명해주시고 각각 어떻게 사용하는지 말씀해주세요.

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 사용 예시:
    • 데이터의 크기가 동적으로 변경되는 경우에 적합합니다.
    • 데이터의 삽입 또는 삭제가 빈번하게 발생하는 경우에 유용합니다.
    • 데이터의 순서가 자주 변경되는 경우에도 효율적입니다.