본문 바로가기
자료구조

#01 자료구조(Data Structure) 와 알고리즘(algorithm)

by chunkind 2024. 3. 23.
반응형

자료구조란?

데이터를 표현하고 저장하는 방법.

 

프로그래밍에서 자료구조(Data Structure)는 데이터를 조직화하고 저장하는 방법이나 메모리 내에서 데이터에 효율적으로 액세스하는 방법을 제공하는 데 사용되는 방법론이다. 자료구조는 데이터를 저장, 조작, 검색 및 정렬하는 데 필요한 알고리즘을 구현하는 데 중요한 역할을 한다.

자료구조는 다양한 형태로 나타날 수 있으며, 각각의 형태는 특정한 작업이나 문제를 해결하는 데 더 나은 성능을 제공할 수 있다. 일반적으로 사용되는 자료구조에는 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등이 있다. 각각의 자료구조는 다양한 연산을 지원하며, 이러한 연산은 데이터를 삽입, 삭제, 검색, 정렬하는 등의 작업을 포함할 수 있다.

효율적인 자료구조의 선택은 프로그램의 성능을 크게 영향을 미칠 수 있다. 따라서 프로그래머는 자료구조를 신중하게 선택하고 구현하여 프로그램의 성능을 최적화하는 것이 중요하다.

 

 

자료구조의 분류

* 선형구조 리스트 * 비선형구조 트리
스택 그래프
 
* 파일구조 순차파일 * 단순구조 정수
색인파일 실수
직접파일 문자
    문자열

파일도 데이터를 저장하는 도구이기 때문에 파일의 구조도(파일이 데이터를 저장하는 방식도) 자료구조에 포함이 된다.

 

알고리즘

표현및 저장된 데이터를 대상으로 하는 문제의 해결 방법

 

알고리즘(Algorithm)은 특정한 문제를 해결하기 위한 일련의 단계나 절차를 의미한다. 이러한 단계들은 입력을 받아 원하는 출력을 생성하기 위해 수행되며, 일반적으로 컴퓨터 프로그래밍에서 사용된다.

알고리즘은 주어진 문제를 해결하는 방법을 명확하게 정의하고, 효율적으로 동작하도록 설계된다. 좋은 알고리즘은 정확성, 효율성, 간결성 등의 속성을 갖추어야 한다.

알고리즘은 다양한 문제 도메인에 적용될 수 있으며, 예를 들어 검색, 정렬, 최단 경로 찾기, 그래프 탐색 등의 다양한 문제를 해결하는 데 사용된다. 각각의 문제에 따라 최적의 알고리즘을 선택하는 것이 중요하다. 알고리즘의 성능은 입력 크기에 따라 달라지며, 보통 시간 복잡도와 공간 복잡도를 사용하여 측정된다.

프로그래밍에서 알고리즘은 특정한 자료구조를 사용하여 문제를 해결하는 방법을 구체화하고, 컴퓨터가 실행할 수 있도록 구현된다. 따라서 알고리즘은 프로그래밍의 핵심 요소 중 하나이다.

 

 

아래와 같이 배열 선언은 자료구조적 측면의 코드이다.

int arr[10] = {1, 2, 3, 4, 5, 6 ... };

 

배열의 저장된 모든 값의 합을 더하는 아래 코드는 알고리즘적 측면의 코드이다.

 

for(idx = 0; idx<10; idx++)
 sum += arr[idx];

 

알고리즘과 자료구조는 밀접한 관계를 갖는다. 자료구조가 결정되어야 그에 따른 효율적인 알고리즘을 결정할 수 있다. 알고리즘은 자료구조의 의존적이다.

 

 

반응형