본문 바로가기
Development/Algorithms

algorithms/자료구조 & 알고리즘에 대하여

by raphael3 2019. 12. 30.
반응형

 

                                                                                                                                                         

                                                                                                                                                                                                                   

                                                                                                                                                         

                                                                                                                                                                                                              

                                                                                                                                                                     

자료구조?

자료구조=데이터 구조=data structure

자료구조란, 현실 세계의 정보를 디지털 형태(데이터)로 저장 및 관리할 수 있게 하는 데이터 구조다. 특히, 적절한 자료구조를 이용해 대량의 데이터를 효율적으로 관리할 수 있다. 효율적인 데이터 처리를 위해서는 데이터가 가진 특성이 무엇이냐에 따라 어떤 데이터 구조를 사용할 것인지가 결정된다. 적절한 데이터 구조를 사용할수록 효율적인 코드가 된다.

데이터를 관리하는 대표적인 예로는 백과사전, 그리고 주민등록번호가 있다. 백과사전은 알파벳의 순서대로 지식들이 나열된 커다란 자료구조라고 볼 수 있다. 또한, 대한민국 국적을 가진 모든 성인남녀의 신원이 명확히 구분하기 위해 도입된 주민등록제도에 따라, 한국인은 모두 앞 6자리와 함께 추가적으로 7자리의 주민등록번호를 부여받는다. 이 주민등록번호는 국가전상망에서 관리가 되는데, 현실세계의 개인에 대한 식별 정보가 데이터화 되어 데이터 구조에 따라 관리되는 대표적인 예라고 할 수 있다.

 

대표적인 자료구조로는 배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등이 있다. 이 자료구조들은 수십년의 컴퓨터 과학 역사에서 가장 많이 사용되어 온 대표적인 자료구조들이다. 이들 자료구조를 기반으로하여 프로젝트에 따라 나만의 새로운 자료구조를 만들어낼 수 있는 능력을 갖추는 것이 궁극의 목표다.

 

알고리즘=algorithms

알고리즘이란, 문제를 푸는 절차 또는 문제를 푸는 방법이다. 어떤 문제가 주어졌을 때, 그 문제를 푸는 절차는 ‘입력’과 ‘출력’으로 이루어져야 한다. 즉 어떤 ‘입력’을 넣었을 때, 그에 따른 ‘출력’을 내는 함수의 형태로 문제에 대한 해법이 주어져야 한다. 이 함수가 바로 알고리즘이다. 우리의 목표는 이와 같이 ‘입력’-‘출력’ 형태의 프로그램을 만드는 것이다. 중요한 것은 해법은 여러가지일 수 있지만 가장 효율적인 해법을 찾는 것이다. 여기서 효율적인 해법이란, 곧 시간(그리고 컴퓨팅 자원(대표적으론 저장공간))을 의미한다. 동일하게 해법을 내는 프로그램이라면, 적은 시간 내에 빠르게 해결해내는 프로그램이 가장 좋다. 따라서, 내가 만든 알고리즘이 어느 정도의 시간을 걸릴지는 계산해낼 수 있어야 프로그램의 효율을 높일 수 있다.

반응형

'Development > Algorithms' 카테고리의 다른 글

algorithms/배열(array)  (0) 2019.12.30
algorithms/알고리즘이란?  (0) 2019.12.30
알고리즘 공부법  (0) 2019.12.26
[Algorithms] 해쉬 테이블(Hash Table)  (0) 2017.04.21
[Algorithms] 이진트리(Binary tree)  (0) 2017.04.19