[자료구조] 1. 자료구조 쉽게 이해하기
글을 쓰기에 앞서, C언어를 기반으로 서술함을 알립니다.
자료구조(Data Structure)
자료구조의 사전적 의미는 이렇다.
컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다.
더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계,
그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.
위키백과 '자료구조' 中
어려워 보이지만, 생각보다 자료구조는 일상에서 많이 접할 수 있다.
가령 사전같은 경우, 한 언어의 거의 모든 단어(자료)가 체계적으로(구조적으로) 담겨져 있다.
가끔씩 길거리에서 볼 수 있는 트럭 안의 쌓인 박스들도 자료구조의 한 모습일 수 있다.
회사 내 조직도 또한 자료구조의 한 모습이고,
To-Do List 도 마찬가지다.
자료구조는 쉽게 말하자면, 자료가 구조적으로 모여있는 것.
컴퓨터과학 입장에선, 프로그램에서 처리할 자료를 표현, 저장하는 구조이다.
알고리즘(Algorithm)
그럼, 자료구조와 알고리즘은 어떤 관계를 맺고 있는가?
알고리즘의 사전적인 정의는 이렇다.
알고리즘(영어: algorithm)은 수학과 컴퓨터과학에서 사용되는,
문제 해결 방법을 정의한 '일련의 단계적 절차'이자
어떠한 문제를 해결하기 위한 '동작들의 모임'이다.
계산을 실행하기 위한 단계적 규칙과 절차를 의미하기도 한다.
위키백과 '알고리즘' 中
자료구조보다 이해가 어려울 수 있다. '실행하기 위한 규칙과 절차'를 비교적 간단하게 적용해보자면,
사전에서 '커피'를 찾기 위해선 ㅋ 으로 시작하는 단어의 시작점에 접근해야 하고,
순서대로 ㅓ -> ㅍ -> ㅣ 순으로 찾지 않겠는가.
맨 밑에 깔린 박스를 꺼내기 위해 위의 박스를 차근차근 내려놔야 하고,
To-Do List를 보며 어떤 계획을 먼저 실행하며 그 다음 실행할 계획은 무엇인지 생각하는 것.
실행하기 위한 규칙과 절차를 여기에 비유할 수 있겠다.
컴퓨터과학 입장에선, 주어진 문제를 해결하는 개략적인 절차다.
자료구조 + 알고리즘 = Program
자료구조 + 알고리즘 = Program 이다.
최대값 탐색 프로그램을 만들어야 한다고 가정하자.
1) 수를 저장하고 있는 자료구조 가 필요하고,
2) 최대값을 탐색할 수 있는 알고리즘 이 필요할 것이다.
알고리즘의 기술 방법
알고리즘의 기술 방법은 다음과 같다.
1) 자연어
˙ 일상생활에서 사용하는 언어를 사용해 알고리즘을 기술함
장점 : 쉽고, 용이함
단점 : 컴퓨터의 입장을 고려하지 않았음. 명확한 의사 전달이 어려움
2) 순서도(Flow Chart)
˙ 미리 약속된 기호나 그림 등으로 알고리즘을 기술함
장점 : 이해하기 쉬움.
단점 : 규모가 클 경우, 복잡해질 수 있음. 세밀한 부분은 기술이 어려움.
3) 의사 코드(pseudo-code)
˙ 프로그래밍 언어의 형태를 일부 사용하면서 자연어를 부가적으로 기술함
장점 : 어떤 프로그래밍 언어로도 구현이 가능함.
단점 : 프로그래밍 논리를 시각적으로 표현하지 않음. for문의 의사코드를 작성할 때
적절한 형식이 존재하지 않음. 문서 유지관리가 필요함.
4) 특정 프로그래밍 언어
˙ 프로그래밍 언어를 사용해서 알고리즘을 기술함
장점 : 컴퓨터랑 직접 소통할 수 있음.
단점 : 사용자가 언어를 이해해야 함.
+ 알고리즘이 되기 위한 조건
1. 입력 : 0개 이상의 입력이 존재해야 한다.
2. 출력 : 1개 이상의 출력이 존재해야 한다.
3. 명백성 : 각 명령어의 의미는 모호하지 않고 명확해야 한다.
4. 유한성 : 한정된 수의 단계 후에는 반드시 종료되어야 한다.
5. 유효성 : 각 명령어들은 종이와 연필, 또는 컴퓨터로 실행 가능한 연산이어야 한다.
자료구조의 종류
자료구조의 종류는 다음과 같다.
1. 배열(Array) : 1차원적인 집합
2. 구조체(Structure) : 타입이 다른 데이터를 묶는 집합
3. 스택(Stack) : 후입선출(LIFO)의 형태를 가진 자료구조
4. 큐(Queue) : 선입선출(FIFO)의 형태를 가진 자료구조
5. 리스트(List) : 순서를 가지고 일렬로 나열한 원소들의 모임
위의 5가지 외에도 힙(Heap), 트리(Tree), 그래프(Graph), 해시 테이블(Hash Table)이 있지만 여기선 생략하겠다.
기본 개념은 2강에서부터 서술하겠다.
[자료구조] 2. 자료구조 기본 개념
[자료구조] 1. 자료구조 쉽게 이해하기 글을 쓰기에 앞서, C언어를 기반으로 서술함을 알립니다. 자료구조(Data Structure) 자료구조의 사전적 의미는 이렇다. 컴퓨터 과학에서 효율적인 접근 및 수정
w8err.tistory.com
'✍🏻배움일지 > 자료구조' 카테고리의 다른 글
[자료구조] 순환(recursion) / 반복(iteration) (12) | 2023.10.25 |
---|---|
[자료구조] 5. 포인터(Pointer) (33) | 2023.10.23 |
[자료구조] 4. 배열의 응용 : 다항식 (0) | 2023.10.22 |
[자료구조] 3. C언어 배열과 구조체 (0) | 2023.10.22 |
[자료구조] 2. 자료구조 기본 개념 (2) | 2023.10.21 |
댓글
이 글 공유하기
다른 글
-
[자료구조] 5. 포인터(Pointer)
[자료구조] 5. 포인터(Pointer)
2023.10.23 -
[자료구조] 4. 배열의 응용 : 다항식
[자료구조] 4. 배열의 응용 : 다항식
2023.10.22 -
[자료구조] 3. C언어 배열과 구조체
[자료구조] 3. C언어 배열과 구조체
2023.10.22 -
[자료구조] 2. 자료구조 기본 개념
[자료구조] 2. 자료구조 기본 개념
2023.10.21