본문 바로가기
Algorithm/자료구조 이론

Chapter 02. 자료구조와 알고리즘이란?

by mean. 2020. 7. 10.
728x90
반응형

자료구조란?

용어: 자료구조, 데이터 구조, Date structure
대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미

(Real world의 정보를 어떻게 데이터로 변환하여 구조를 만드느냐? = 자료구조)

코드상의 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를 구조화해야함.
어떤 데이터 구조를 사용하느냐에 따라, 코드 효율이 달라짐.

효율적으로 데이터를 관리하는 예.

우편번호: 5자리 우편번홀르 국가의 기초구역을 제공

5자리 우편번호에서 앞자리 3자리는 시, 군, 자치구를 표기, 뒤 2자리는 일련번호로 구성

지역에 대한 정보를 5자리의 숫자로 나타낸다.

학생 관리: 학년, 반, 번호를 학생에게 부여해서, 학생부를 관리

  • XX학년, X반, X번 학생
  • 만약 위 관리 기법이 없다면... 3000명 학생중 특정 학생을 찾기 위해, 전체 학생부를 모두 훑어야 함.

현실세계의 정보를 어떻게 구조화 할지 = 자료구조
= 어떻게 데이터의 구조를 가져감에 따라, 프로그래밍의 성능에 차이가 발생한다.

결론적으로, 데이터 특성에 따라 다양한 데이터 구조가 발생하기 때문에, 대표적인 자료구조들을 이해하고 프로그래밍을 하여야 어느정도의 성능을 보장하는 알고리즘, 프로그램을 구현할 수 있게되기 때문이다.

대표적인 자료구조

  • 배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등

위의 자료구조를 익혔을 때의 효과?
유명화가의 그림을 익히기 위해서 모방을 하는 것과 마찬가지로 프로그래밍을 수십년간 연구하며, 가장 많이 이용되었던 자료구조들을 익히며 사용해봄으로써 새로운 자료구조를 만들거나 응용하여 프로그래밍을 구현한다.

  • 현실세계의 가장 대표적인 데이터 구조? - 사전

알고리즘이란?

용어: 알고리즘, algorithm
어떤 문제를 풀기 위한 절차/방법
어떤 문제에 대해, 특정한 '입력'을 넣으면, 원하는 '출력'을 얻을 수 있도록 만드는 프로그래밍
어떠한 절차를 따라서 진행하다보면, 처음의 '입력'을 원하는 '출력'의 형태로 변환되어 지는 과정.

  • 현실 세계의 가장 대표적인 알고리즘? 백종원 레시피

좋은 알고리즘?

어떠한 문제를 해결하는 과정은 사람마다의 차이가 발생한다. 때문에 어떠한 문제를 해결하기 위한 가장 좋은 알고리즘을 판단하는 기준은 해당 문제에 대해 어느 정도의 시간이 걸리는 지와 어느정도의 저장공간을 차지하는가를 기준으로 결정한다.
좋은 알고리즘 = 가장 적은 시간을 소요, 적은 양의 저장 공간.

자료구조와 알고리즘이 중요한 이유

  • 어떤 자료구조와 알고리즘을 쓰느냐에 따라, 성능이 천지차!

최근에 빅데이터(Big Data)시대에 돌입하게 되면서, 수천만 수백건의 데이터를 가지고 알고리즘을 실행하는 경우가 많아졌기 때문에, 알고리즘의 따라 성능이 천지차이가 난다!

-> 결국 프로그래밍을 잘 할 수 있는 기술과 역량을 익히고, 검증할 수 있음

자료구조/알고리즘, 그리고 파이썬(Python)

어떤 언어로든 자료구조/알고리즘 익힐 수 있음

  • 이전에는 무조건 C or C++로만 작성하도록 하는 경우가 많았음
  • 최근에는 언어로 인한 제약/평가는 없어짐
    가장 쉽고 빠르게 자료구조/알고리즘을 익힐 수 있는 언어: 파이썬

-> 현업에서도 파이썬은 많이 사용됨.

728x90
반응형

'Algorithm > 자료구조 이론' 카테고리의 다른 글

Chapter 06. 링크드 리스트(Linked List)  (0) 2020.07.20
Chapter 05. 스택(Stack)  (0) 2020.07.20
Chapter 04. 큐(Queue)  (0) 2020.07.17
Chapter 03. 배열  (0) 2020.07.14
Chapter 01. 강의소개 및 학습 방법  (0) 2020.07.10