자료구조와 알고리즘은 컴퓨터 과학에서 기초로 다룰 만큼 근간이 되는 학문입니다. 이번 포스팅에서는 자료구조와 알고리즘에 대해 알아보고 둘의 관계를 다루어 보겠습니다. 이번 글에서는 전반적으로 흐름에서 자료구조와 알고리즘의 관계에 대해 다룰 예정입니다. 구현 방법, 예시 등은 다른 글에서 다루었으니 필요하시면 찾아보세요!
1. 자료구조
자료구조란?
효율적으로 데이터를 접근/수정하기 위해 데이터를 조직화하는 방법입니다.
그렇다면 자료구조는 왜 중요할까요? 어떤 자료구조를 사용하느냐에 따라 데이터의 처리 속도나 메모리 사용량이 크게 달라집니다. 따라서 자료구조는 프로그램의 실행 속도를 결정짓는 매우 중요한 개념입니다.
자료 구조의 특징
상황에 맞는 자료구조를 선택하려면 다음 세 가지 특징을 만족해야 합니다.
- 효율성
데이터에 효율적으로 접근할 수 있어야 한다. - 추상화
핵심적인 개념은 동일하다. 핵심 개념을 간단하게 정하고 사용 방법만 알면 언어, 상황에 국한되지 않고 적용할 수 있다. - 재사용성
다양한 프로그램에서 사용할 수 있다.
자료구조의 분류
자료구조는 데이터가 어떻게 연결되어있는징 따라 선형 자료구조와 비선형 자료구조로 나눌 수 있습니다.
- 단순 구조
연결되어있지 않은 하나의 데이터이다. 컴퓨터에서 기본적으로 제공하는 정수, 실수, 문자 등을 저장하는데 사용된다. - 선형 자료구조
데이터가 1대1로 연결되어 있는 구조이다. 배열, 스택, 큐, 덱, 연결리스트가 있다. - 비선형 자료구조
데이터가 1대 多로 연결되어 있는 구조이다. 그래프, 트리가 있다.
이를 전체적인 구조도로 나타내면 다음과 같습니다.
2. 알고리즘
알고리즘이란?
문제를 해결하기 위한 명령어들의 집합입니다. 우리가 해결해야할 문제들은 일반적으로 조합의 수 세기, 결정문제 등이 있습니다. 물론 모든 경우의 수를 세어도 문제는 풀 수 있습니다 하지만 시간 내에 해결하려면 반드시 알고리즘이 필요하죠
3. 자료구조와 알고리즘의 관계
앞에서 어떤 자료구조를 사용하느냐에 따라 프로그램의 속도차이가 난다고 했습니다. 문제 해결을 위해서는 먼저 데이터들은 메모리에 잠시 저장해 두어야 하는데요 어떤 자료구조를 선택해서 어떻게 로직을 짜느냐가 문제풀이의 시간을 결정합니다. 따라서 자료구조는 알고리즘과 밀접한 관계가 있습니다.
'자료구조 | 알고리즘' 카테고리의 다른 글
[알고리즘] 부분 수열 결정 문제의 다양한 접근법 (0) | 2023.12.17 |
---|---|
[알고리즘] (동적 계획법, 세그먼트 트리)가장 긴 증가하는 부분 수열 (LIS) (0) | 2023.11.24 |
최소 신장 트리(Minimum Spanning Tree) (0) | 2023.11.01 |
경이로운 BE 개발자가 되기 위한 프로그래밍 공부 기록장
도움이 되었다면 "❤️" 또는 "👍🏻" 해주세요! 문의는 아래 이메일로 보내주세요.