대학생 쩡딱구리
0. 알고리즘과 자료 구조 본문
1. 알고리즘이란?
"유튜브 알고리즘이 나를 꽤 괜찮은 곳으로 데리고 왔다."
2PM의 '우리 집' 유튜브 영상에 달린 베스트 댓글 중 하나다. 이 예시와 같이 우리는 알게 모르게 알고리즘이라는 말을 접한다. 용어를 접하진 않더라도 우리가 검색을 하거나 유튜브나 넷플릭스에서 어떤 영상에 노출되는 것 역시 알고리즘에 의한 것이다.
알고리즘(Algorithm)이란 어떤 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것이다.
위의 순서도를 보면 입력(Input)과 출력(Output) 사이 입력한 내용을 일정한 절차에 의해 출력물로 만드는 것이 알고리즘(Algorithm)임을 알 수 있다. 알고리즘은 잘 정의된 계산 문제를 풀기 위한 도구라고도 볼 수 있는데 이 계산 문제를 풀기 위한 수단이자 방법이 자료구조인 것이다. 문제에 맞는 알고리즘과 자료구조를 정의하는 것이 프로그래밍에서 가장 중요한 요소 중 하나이다.
2. 자료구조란?
알고리즘의 핵심 요소인 자료구조(Data Structure)는 자료를 효율적으로 접근하기 위해 자료를 구조화해서 저장하고 관리하는 방법이다. 아래 그림을 예로 보도록 하자.
내가 많은 펜들 중 빨강 색연필 한 자루를 찾고 싶다고 할 때, 왼쪽의 경우 많은 종류의 펜을 한 데 모여 있어 내가 원하는 빨강 색연필을 이곳 저곳에서 찾아야 하는 것이 번거로울 뿐더러 시간도 오래 걸린다. 반면, 오른쪽처럼 펜들을 깔끔히 정리해놓았을 때 나는 연필꽃이 전체를 볼 필요 없이 빨강 색연필들이 있는 칸에서 한 자루를 뽑으면 되니 시간이 훨씬 절약된다는 것이다. 즉, 좋은 자료구조는 자료에 접근하고 알고리즘의 처리 시간을 줄여주어 효율적으로 프로그래밍이 작동하도록 한다.
내가 다룰 자료구조의 종류는 아래와 같은데, 차차 순서대로 다루어 볼 것이다.
이번 게시물에서는 자료구조의 처음 부분인 알고리즘과 자료구조의 관계와 자료구조의 종류에 대해 알아보았다.
다음 게시물에서는 파이썬의 자료 구조를 다뤄보겠다!
'STUDIES > DATA STRUCTURE' 카테고리의 다른 글
1-3. Big-O 표기법 (0) | 2020.10.14 |
---|---|
1-2. 시간 복잡도 분석 (0) | 2020.10.13 |
1-1. 알고리즘 분석 (0) | 2020.10.13 |
0. 파이썬의 자료구조 (0) | 2020.10.10 |
자료구조 복습을 들어가며 (0) | 2020.10.10 |