티스토리 뷰

자료구조

베니의 자료구조 - 자료구조(DataStructure)란?

사용자 개발자 베니 2019. 9. 2. 23:48

베니의 자료구조 - 자료구조(DataStructure)란?

 베니는 생활코딩 이고잉님의 자료구조 강의, 구글링을 통해 자료구조를 공부하고 있습니다.  
 인용하는 내용의 모든 출처는 링크를 올리도록 하겠습니다.
 도움 주신 모든분들께 감사드립니다!

코인하는 프로그래머님 - https://andrew0409.tistory.com/148
생활코딩 이고잉님 - https://www.youtube.com/watch?v=bj2F0hTiTtw&list=PLuHgQVnccGMDsWOOn_P0EmAWB8DArS3Fk

 

목차

1.  자료구조란?

2. 자료구조의 특징

3. 자료구조의 분류 

4. 베니의 생각

 

 

자료구조는 도서관에서도 볼 수 있다. (Pixabay 로부터 입수된  ElasticComputeFarm 님의 이미지 입니다)


1. 자료구조란?

자료구조란 사전적인 의미로 '자료(Data)의 집합'을 의미

 좀 더 쉽게 설명하자면 책을 비유로 설명할 수 있습니다.

 

책의 글자 하나하나는 1개의 데이터가 되는 것이고 그 데이터들이 모여서 책이라는 집합이 되는 것입니다.

그리고 책을 또 하나의 데이터라고 할 때 도서관은 데이터들의 집합이라고도 할 수 있습니다.

 

우리는 도서관에서 책을 찾을 때 컴퓨터에서 찾고 싶은 도서를 검색 하고 위치를 파악하여 해당 위치로 가서 책을 찾습니다.

만약 컴퓨터로 검색할 수 없다면 우리는 책을 찾는데 더 많은 시간과 에너지를 투자해야 합니다.

 

우리가 책을 쉽게 찾을 수 있도록 책들이 논리적으로 정의된 규칙에 의해

도서관의 특정 위치에 정리되어 있고 이것을 효율적으로 찾을 수 있게 되어 있는 것

그것이 바로 자료구조라고 할 수 있습니다!

 


2. 자료구조의 특징

자료구조의 특징은 효율성 , 추상화 , 재사용성 3가지이다.

 

(1) 효율성

 - 효율성이란 자료를 빠르게 찾기 위한 효과적인 방법입니다.

 

# 도서관에서 책을 찾는 방법
(1) 내 앞에 책장부터 시작하여 도서관에 구석구석을 돌아다니며 찾는다.
(2) 카운터에 있는 완전 내 스타일인 점원한테 물어본다.
(3) 조금 멀리 있는 도서검색대에서 컴퓨터를 통해 검색을 한다.
(4) 내 책의 카테고리는 개발이기 때문에 개발 카테고리의 책장에서 찾는다.

자 여러분들은 4가지의 방법 중에 어떤 것을 선택할까요~? ㅋㅋ ( 전 2...ㅂ.. )

 

언뜻 보기에는 3번 방법이 가장 빠르게 찾을 수도 있지만 만약 내 바로 앞에

책이 있었다면 1번 방법이 가장 빨리 찾았을 것이고 3번 방법으로 진행을 하여도

해당 위치에 책이 없어 다시 2번 방법을 선택해야 할 수도 있을 것입니다.

 

이 중에서 가장 효율적인 것을 선택하여 구현하는 것이 바로 자료구조의 특징 중 하나인 효율성입니다! 

 

 

(2) 추상화

 - 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것

 

추상화는 솔직히 저도 설명드리기가 참 어려운 특징입니다... ㅜㅜ

제가 이해한만큼 설명드리자면 자료구조는 자체의 내부 구현의 알고리즘과 구현에 집중하는 것이 아닌

해당 알고리즘과 구현을 통해 나온 데이터를 어떻게 사용하는지 이해하는 것이 중요하다

예를 들어 내가 만든 자료구조를 다른 사람이 INPUT 데이터와 OUTPUT 데이터만 알면 쉽게 사용할 수 있는 것이다.

 

(3) 재사용성

 - 설계 시 특정 프로그램에서만 동작하게 설계하는 것이 아닌 다양한 프로그램에서 동작 가능하도록 설계

 

우리 집안 사람들을 프로그래밍 한다고 할 때 아버지, 어머니, 형, 나 이렇게 있을 때

이 4명의 공통적인 기능은 먹고, 자고, 싸고 이다 그렇기 때문에 기능 자체를 각각 따로 구현할 필요가 없이

3가지의 기능을 우리 가족이 최대한 공통으로 사용할 수 있게 만드는 것이다

 


3. 자료구조의 분류

자료구조는 크게 선형 자료구조와 비선형 자료구조로 나뉜다.

(1) 선형 자료구조

 - 데이터가 일렬로 나열되어 있는 것을 뜻한다

 - 배열(Array) , 연결 리스트(Linked List), 스택(Stack), 큐(Queue)가 존재한다.

(2) 비선형 자료구조

 - 데이터가 일렬이 아닌 특정한 형태를 띠고 있는 것을 뜻한다.

 - 트리(Tree), 그래프(Graph)가 존재한다.

 


4. 베니의 생각

처음에 자료구조 정리를 시작하려고 할 때 막막했는데 구글링을 통해 도움을 얻으면서
도움이 많이 됬습니다.

선형 자료구조부터 시작하여 하나씩 내용들을 정리하여 지속적으로 포스팅하도록 하겠습니다
자료구조의 특징 추상화에 대해 더 쉽고 정확한 정리를 하지 못한 것이 마음에 걸립니다.. ㅜㅜ

글을 봐주시는 분이 있다면 피드백은 언제나 대환영입니다!! (꾸벅)

TODO
- 배열(Array)

 

댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
317
Today
0
Yesterday
1
링크
«   2020/06   »
  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        
글 보관함