일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 안드로이드 디자인패턴
- compose
- 코틀린
- mock
- 깃
- Kotlin
- Di
- Observable
- 디자인패턴
- git
- 안정성
- MVVM
- 테스트의 장점
- 단위테스트
- Python
- 제한함수
- 유닛테스트
- 공격적 프로그래밍
- 컴포즈
- 안드로이드
- UnitTest
- Room
- dagger2
- 자료구조
- ViewModel
- rxjava
- 코딩테스트
- Android
- 파이썬
- Jetpack
Archives
- Today
- Total
세상을 바꾸는 개발자
자료구조의 주요 사용처 본문
배열 (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