안녕하세요. 오늘은 자료구조와 알고리즘이 무엇인지 개념을 살펴보는 시간을 가질 것입니다.
목차
- 자료구조란?
- 자료구조의 분류
- 선형구조(리스트, 스택, 큐, 덱)
- 비선형 구조( 트리, 그래프)
- 알고리즘이란?
- 알고리즘의 분류
- 자료구조와 알고리즘은 뭐가 달라?
자료구조란?
컴퓨터에서 데이터를 정리하고 저장하는 방입니다. 방대한 데이터를 컴퓨터를 이용해 처리하려면 컴퓨터가 이해하기 쉽도록 만들어줘야 합니다. 예를 들어 일상생활에서 국어사전은 원하는 단어를 찾기 위해 가다나 순으로 정렬되어 있습니다. 만약 정렬이 되어있지 않으면 사전의 처음부터 끝까지 찾아야 하는 수고스러움이 있습니다. 이처럼 자료마다 자료에 맞는 효율적인 정리 방법을 찾는 것이 중요합니다.
자료구조의 분류
자료구조는 숫자와 문자와 같은 단순 자료구조와 여러 자료를 보관하는 복합 자료구조로 나눌 수 있습니다. 복합자료는 다시 순차적으로 나열하는가에 따라 다시 선형자료구조와 비선형 자료 구조로 나뉩니다. 자료를 순차적으로 나열하여 저장하는 선형구조는 형태에 따라 리스트, 스택, 큐, 덱으로 나뉩니다. 비선형 자료형은 보다 복잡한 관계를 가집니다. 하나의 자료 항목에 여러 개의 하위 항목들이 존재할 수 있는 계층적 구조인가 아닌가에 따라 트리와 그래프로 나뉩니다.
선형 구조(리스트, 스택, 큐, 덱)
항목들을 접근하는 방식에 따라 다시 세분화되는데 데이터 접근이 맨 앞과 맨뒤로 제한된 것을 스택, 큐, 덱이라고 하고 어느 위치여도 데이터의 접근이 자유로운 것은 리스트라고 합니다.
리스트 : 원하는 위치에 데이터를 삽입, 삭제할 수 있습니다.
스택 : 데이터를 접근할 수 있는 입구가 하나, 데이터가 쌓이는 형식이기 때문에 먼저 들어가면 제일 나중에 나옵니다.
예) 실행 취소로 전단계로 돌아가는 것입니다.
큐 : 데이터를 접근할 수 있는 입구가 두 개, 하지만 입구, 출구 따로 존재합니다. 먼저 들어가면 제일 먼저 빠져나옵니다.
예) 대기 순서입니다. 먼저 번호표를 뽑은 사람이 먼저 이름 불리는 것입니다.
덱 : 데이터를 접근할 수 있는 입구가 두 개, 큐와 다르게 입구랑 출구 구분 없습니다. 들어간 곳에서 다시 나와도 됩니다.
비선형 구조(트리, 그래프)
하나의 자료 항목에 여러 개의 하위 항목이 존재하는 계층 구조인 트리와 복잡한 연결 관계를 나타내는 그래프로 나뉩니다. 데이터를 순차적으로 접근하는 것이 아니라 여러 개의 항목이나 간선(항목을 연결한 선)을 거쳐야만 해당 데이터를 접근할 수 있어 보다 복잡합니다.
트리 예) 이진트리 : 데이터를 탐색할 수 있는 구조
그래프 예) 가중치 그래프 : 간선(항목을 연결한 선)에 가충치를 할당해 최단 경로 탐색과 같은 문제를 해결하기 위한 구조
알고리즘이란?
어떤 문제를 해결하는 방법입니다. 알고리즘은 주어진 문제를 해결하기 위해 다양한 접근 방법을 제공하기 때문에 효율적인 알고리즘을 선택하고 구현하는 것이 중요합니다.
알고리즘의 분류
- 정렬 알고리즘 : 정렬하는 방법
- 검색 알고리즘 : 데이터를 찾는 방법
- 최단 경로 알고리즘 : 두 지점 사이의 최단 경로 찾는 방법
- 그래프 알고리즘 : 그래프의 구조를 분석하는 방법
등 다양한 종류의 알고리즘이 존재합니다.
알고리즘도 자료를 정리하는 방법 아니야?
결론부터 말하자면 자료구조와 알고리즘 둘 다 자료 정리하는 방법 맞습니다. 자료구조는 알고리즘 과목의 직전 단계이기도 하고 그 자체로 여러 알고리즘을 포함하고 있습니다.
자료구조는 데이터를 구성하고 저장하는 방법을 제공하는 반면 알고리즘은 문제를 해결하기 위한 계산 과정을 정의하는 것입니다. 컴퓨터 프로그램을 제작하기 위해 알고리즘은 자료구조를 이용하여 문제를 해결하는 방법을 제공하므로, 자료구조와 알고리즘은 밀접한 관련이 있습니다.
'프로그래밍 이겨내기' 카테고리의 다른 글
[파이썬] 알기 쉽게 풀어쓴 클래스(class) (0) | 2023.05.31 |
---|---|
오픈 소스 SW의 중요 가치와 장단점 (0) | 2023.04.12 |
OSI에서 제시하고 있는 오픈소스SW조건 (0) | 2023.04.12 |
오픈 소스란? (feat.의미와 역사에 대하여) (0) | 2023.04.11 |
[파이썬] 알기 쉽게 풀어쓴 재귀 함수 (0) | 2023.03.30 |
댓글