이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

5. 리스트의 그룹과 공유

  • 2020.04.23 14:21
  • 학부 수업/자료구조
반응형

그룹화Grouping

데이터 원소들은 각각 상이한 그룹에 속하며, 각 그룹의 크기는 다양하다. 예를들어, 한 쇼핑몰에서 파는 제품들을 채소, 전자제품, 육류 등의 카테고리에 따라 그룹화할 수 있으며, 각 카테고리에 속한 제품의 수가 상이할 수 있다.

레코드의 리스트 사용

  1. 배열을 이용한 구현
  2. 연결리스트를 이용한 구현

그룹을 표현하기 위해, elem 및 group 필드로 구성된 레코드의 리스트를 사용할 수 있다. 단순하다는 장점이 있지만, 특정 그룹에 관한 작업을 위해서는 전체 레코드를 순회해야 하는 단점이 있다.

부리스트sublist들의 리스트 사용

  1. 2D 배열을 이용한 구현
  2. 연결리스트의 배열을 이용한 구현

그룹을 표현하기 위해, 그룹의 리스트를 만들고, 각 그룹의 리스트에 그룹에 속하는 원소를 넣는 방법이다. 특정 그룹에 관련된 작업을 빠르게 처리할 수 있는 장점이 있다.

2D 배열을 이용하면 비교적 쉽게 구현 가능하지만, 열의 크기가 최대 그룹의 크기를 따르기에 저장공간이 낭비되는 문제가 있다.

연결리스트의 배열을 만들어 기억장소 사용을 최소화하면서도 효율적인 구현이 가능하다. 이때, 헤드 노드와 테일 노드의 위치를 저장하는 1D 배열을 두개 만들어 사용하면 된다.

공유 share

데이터 원소들이 상이한 그룹에 의해 공유되는 것. 이때, 각 관련 그룹에 공유 데이터 원소를 복제하는 것은 시간과 저장공간이 낭비되므로 허용하지 않는다.

예를들어, 대학생 A, B가 공통된 과목을 듣는 경우, 그룹 A, B에서 해당 과목의 원소가 공유되는 것이다.

레코드의 리스트 사용

앞서 그룹화에서의 방안과 동일하다.

포인터의 리스트 사용

  1. 배열을 이용한 구현
  2. 연결리스트를 이용한 구현

원소들을 별도의 메모리에 저장하고, 이들에 대한 참조를 포인터로 수행한다. 단순하고 기억장소 사용을 최소화할 수 있지만, 특정 원소 관련작업의 격리 처리가 불가한 단점이 있다. (한 그룹에 속한 원소에 대한 작업을 처리할 때, 해당 원소가 다른 그룹에도 속하지는 않는지 점검이 불가)

다중리스트 사용

  1. 2D 배열 사용
  2. 다중 연결리스트를 이용한 구현

원소들의 리스트와 그룹들의 리스트가 상호 교차하는 형태의 다중리스트를 사용하는 방법. 원소와 그룹의 상호 관계를 갖는 교차점 서브리스트가 있어, 특정 원소 및 특정 그룹에 관련한 작업을 처리할 수 있음.

  • 구현 방법 1
    행과 열이 각각 원소와 그룹을 나타내는 2차원 부울(boolean) 배열을 이용하여 교차점을 저장.
    약간의 기억장소 낭비가 발생하지만 효율적이다.
  • 구현 방법 2
    두 개의 배열을 이용하여 원소 및 그룹의 리스트를 각각 구현하고, 상호 교차하는 원형 헤더 연결리스트를 이용하여 (원소, 그룹) 쌍의 부리스트들을 구현한다. 기억장소 낭비를 최소화할 수 있다.
반응형

'학부 수업 > 자료구조' 카테고리의 다른 글

7. 스택 ADT  (0) 2020.05.14
6. 집합 ADT  (0) 2020.05.09
4. 리스트와 추상자료형 (Abstract Data Type)  (0) 2020.04.17
3. 기초 데이터구조 - 배열, 연결 리스트  (0) 2020.04.10
2. 재귀적 알고리즘  (0) 2020.04.10

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 7. 스택 ADT

    7. 스택 ADT

    2020.05.14
  • 6. 집합 ADT

    6. 집합 ADT

    2020.05.09
  • 4. 리스트와 추상자료형 (Abstract Data Type)

    4. 리스트와 추상자료형 (Abstract Data Type)

    2020.04.17
  • 3. 기초 데이터구조 - 배열, 연결 리스트

    3. 기초 데이터구조 - 배열, 연결 리스트

    2020.04.10
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바