#취준일기_240718

🌱 Today I Learned… CS 기본지식과 볼 때마다 헷갈리는 자료구조 머릿 속에서 뱅글뱅글 돌기만 하고 좀 처럼 입밖으로 나오지 않는다. 되새김질 하듯 자주 보자.

1. 배열(Array)과 리스트(List)

__배열__은 데이터를 __연속적인 메모리 공간__에 순차적으로 저장하는 자료구조로, 크기가 고정되어 있는 것이 특징이다. index를 사용해 특정 요소를 찾고 조작하는 것이 가능하며, 배열 선언 시 크기를 지정해야 한다. __리스트__는 배열과 비교했을 때, __가변적인 크기의 저장공간__을 갖고 있어 __데이터의 삽입과 삭제가 자유롭다__는 것이 특징이다.

✏️ &nbsp 배열과 리스트의 차이점

  1. 메모리 할당: 배열은 연속적인 메모리 공간에 할당되고, 리스트는 비연속적인 메모리 공간에 할당된다.

  2. 크기: 배열은 크기가 고정되어 있으며, 리스트는 가변적이다.

  3. 접근 방법: 배열은 인덱스를 통한 빠른 접근이 가능하지만, 리스트는 순차적으로 접근해야 한다.

  4. 삽입과 삭제: 배열은 삽입과 삭제가 번거롭고 시간이 오래 걸리지만, 리스트는 삽입과 삭제가 빠르다.


2. Map, Hash, Set

Map : 키와 데이터를 같이 저장

  • Key(키)랑 Value(값)의 쌍으로 데이터 관리, 순서가 없고, 키에 대한 중복이 불가함
  • Key의 검색 속도가 검색 속도를 좌우

Set : 순서가 없는 데이터의 집합. 데이터(값)의 중복을 허용하지 않음

  • 순서가 없고, 중복을 허용하지 않는다.
    • 중복저장이 불가하기 때문에 동일한 값을 여러번 삽입해도 하나의 값만 저장할 수 있다.
    • null을 허용하지만 중복저장이 불가하기 때문에 한 번만 저장할 수 있다.
  • 단순 집합의 개념으로 입력 순서를 유지하지 않기 때문에 정렬하려면 별도의 처리가 필요하다.

Hash : 임의의 데이터를 고정된 길이의 값으로 리턴해주는 함수

  • 입력받은 데이터를 해시 값으로 출력시키는 알고리즘.
    • cf. 단방향 암호화 기법:암호화는 수행하지만 복호화는 불가능한 암호화 기법
  • 출력된 해시 값은 알고리즘에 따라 다양한 결과를 나타내기 때문에 목적에 맞게 다양하게 설계해 활용할 수 있다.
  • 해시함수를 사용하여 키를 해시값으로 매핑하고, 이 해시값을 색인(Index) 혹은 주소 삼아 데이터의 값(value)을 키와 함께 저장하는 자료구조를 해시 테이블(Hash Table) 혹은 해시맵(Hash Map) 이라고 한다.

Leave a comment