본문 바로가기
면접 준비

[면접 준비][자료구조] 벡터, 리스트, 맵, 딕셔너리

by 스테디코디스트 2023. 7. 21.
반응형

1. 배열

- 스택에 생성되는 인덱스 기반의 기본 자료구조

- 길이가 고정되어 있음

- 메모리의 효율성이 높음

- 원소에 직접 접근하는 것이 쉬움

- 원소를 중간에 추가하거나 삭제하는 것은 어려움

 

2. 벡터

- 힙에 생성되어 메모리에 동적으로 할당되는 iterator 기반 컨테이너

- 배열과 같이 연속적인 메모리 값에 할당되고 특정 원소에 접근하기 쉬움

- 속도 면에서는 배열에 비해 성능이 떨어지지만 자료를 효율적으로 관리할 수 있고, 예외처리가 쉬움

- 배열과 마찬가지로 원소를 중간에 추가하거나 삭제하는 것은 어려움

 

3. 리스트

- 비연속적인 메모리 값을 가짐

- 포인터로 연결되어 연결리스트라고 불림

- 각 원소의 추가 및 제거가 빠르고 쉬움

- 원소에 직접 접근하는 것은 불가능하고 처음이나 끝부터 차례대로 탐색해서 접근해야함

 

4. 맵

- key와 value의 쌍으로 이루어진 컨테이너

- 일대일 대응 (휴대폰 하나당 한사람에 대응되는 것과 유사)

 

5. 딕셔너리

- key와 value의 쌍으로 이루어진 컨테이너

- 일대다 대응(한 단어에 여러 뜻이 있는 사전과 유사)

- C#에서 제네릭 기반 컨테이너로 사용되기 때문에 박싱/언박싱이 일어나지 않는다. -> 자료형의 안정성 보장


<면접 예상 질문+답안>

1. 배열과 벡터의 차이점은 무엇인가요?

- 배열벡터는 모두 연속적인 메모리 값을 가져 원소의 직접 접근이 용이하고, 원소의 삽입과 삭제가 어렵습니다. 하지만 배열은 스택에 생성되는 인덱스 기반의 자료구조이고, 벡터는 자료를 힙에 동적으로 할당하는 iterator 기반의 있는 자료구조입니다. 또한 배열은 인덱스 기반의 접근이고, 벡터는 포인터를 이용한 접근이기 때문에 속도 측면에서는 배열이 빠르다고 할 수 있지만 저장할 데이터의 개수가 가변적인 경우에는 벡터를 사용하는 편이 좋습니다.

2. 배열과 리스트의 차이점은 무엇인가요?

- 배열은 메모리 값이 연속적으로 할당되고 리스트는 메모리 값이 비연속적으로 할당됩니다. 또한 배열은 인덱스로 이루어져 원소에 직접 접근이 용이하지만 원소의 삽입,삭제가 어렵고, 반대로 리스트는 포인터로 이루어져 원소의 삽입, 삭제가 용이하고, 원소에 직접 접근하는 것은 어렵습니다.

3. 맵과 딕셔너리의 차이점은 무엇인가요?

- 딕셔너리 모두 key와 value로 이루어진 컨테이너입니다. 하지만 은 key와 value가 일대일 대응으로 연결되는 반면 딕셔너리는 key와 value가 일대다 대응으로 연결됩니다. 또한 딕셔너리는 c#에서 제네릭을 기반으로 하여 정의된 컨테이너이므로 박싱/언박싱이 일어나지 않아 자료형의 안정성이 보장된다는 특징을 가지고 있습니다.