세상을 바꾸는 개발자

자료구조의 주요 사용처 본문

CS 지식/자료구조

자료구조의 주요 사용처

헬창코딩 2023. 5. 15. 22:11

배열 (Array)

  • 장점
    • 바로 만들어서 활용하기가 쉽다
    • 더 복잡한 자료 구조의 기초가 될 수 있다
    • 원하는 데이터를 효율적으로 탐색/가져올 수 있다
    • 정렬에 용이하다
  • 단점
    • 데이터를 저장 할 수 있는 메모리 크기가 고정되어 있다
    • 데이터 추가 / 삭제 방법이 비효율적이다
    • 구조 재구성 시 정렬하는 방식이 비효율적이다
  • 사용
    • 엑셀의 스프레드시트 처럼 직사각형 테이블, 수학적 벡터 (vector) 및 행렬 (matrix)를 구현하는 데 사용된다
    • 다른 데이터 구조에서 사용된다

스택 (Stack)

  • 장점
    • 동적인 메모리 크기
    • 데이터를 받는 순서대로 정렬된다
    • 빠른 런타임 (runtime)
  • 단점
    • 가장 최신 요소만 가져온다
    • 한번에 하나의 데이터만 처리 가능하다
  • 사용
    • 가장 마지막으로 입력된 것을 순차적으로 바로 처리하고 싶을 때
    • 브라우저의 뒤로가기
    • 실행 취소
    • 재귀

큐 (Queue)

  • 장점
    • 동적인 메모리 크기
    • 데이터를 받는 순서대로 정렬된다
    • 빠른 런타임 (runtime)
  • 단점
    • 가장 오래된 요소만 가져온다
    • 한번에 하나의 데이터만 처리 가능하다
  • 사용
    • 반복적이고 자주 받는 데이터를 비동기적으로 처리 할 때 효율적
    • 음성 데이터 처럼 순서에 민감한 데이터를 처리 할 때
    • 프린트 대기열처럼 가장 먼저 입력 받은 데이터를 먼저 처리해야 할 때
    • 캐시(Cache) 구현

연결 리스트 (Linked list)

  • 장점
    • 새로운 요소들의 추가 및 삭제가 용이하고 효율적이다
    • 배열처럼 메모리에 연속적으로 위치하지 않는다
    • 배열처럼 구조의 재구성이 필요없다
    • 동적인 메모리 크기
    • 메모리를 더 효율적으로 쓸 수 있기 때문에 대용량 데이터 처리 적합
  • 단점
    • 배열보다 메모리를 더 사용한다
    • 처음부터 끝까지 순회하기 때문에 원하는 값을 비효율적으로 검색/가져온다
    • 노드를 반대 방향으로 검색할 때 비효율적이다 (이중 연결 리스트의 경우)
  • 사용
    • 메모리 크기가 정해져 있지 않을 때
    • 데이터를 연속적으로 빠르게 삽입/제거가 필요 할 때
    • 이미지 뷰어, 갤러리
    • 음악 플레이어

해시 테이블 (Hash tables / Hash map)

  • 장점
    • 새로운 요소들의 추가/삭제가 용이하고 효율적이다
    • 원하는 값의 검색/가져오기가 빠르고 효율적이다
    • 동적인 메모리 크기 (그러나 직접 크기를 늘리거나 줄여야 한다)
  • 단점
    • 충돌이 일어날 수 있다 (입력된 키의 해시값이 이미 데이터가 저장된 버킷을 가리킬 수 있다)
    • 충돌이 자주 일어날 수 있으며 해시함수의 정비가 필요한 경우가 많다.
  • 사용
    • 데이터베이스 : 주소 찾기, 이름 찾기, 번호 찾기
    • 사용자 로그인 인증

그래프 (Graph)

  • 장점
    • 새로운 요소들의 추가/삭제가 용이하고 효율적이다
    • 구조의 응용이 가능하다
  • 단점
    • 충돌이 일어날 수 있다 (입력된 키의 해시값이 이미 데이터가 저장된 버킷을 가리킬 수 있다)
  • 사용
    • 데이터베이스 : 주소 찾기, 이름 찾기, 번호 찾기
    • 사용자 로그인 인증

'CS 지식 > 자료구조' 카테고리의 다른 글

트라이(Trie) 란?  (0) 2023.05.15
맵(Map) 이란?  (0) 2023.05.15
셋(Set) 이란?  (0) 2023.05.15
리스트(List) 란?  (0) 2023.05.15
배열(Array) 란?  (0) 2023.05.15
Comments