안녕하세요 오늘의 이것저것입니다.

프로그래밍을 하다보면 알고리즘 자료구조라는 말을 들었을겁니다.

여기서 오늘은 자료구조에 대해서 알아보겠습니다.

 

 

프로그래밍

프로그래밍은 어떤 한 웹, 프로그램 등을 만들기 위한 과정으로 컴퓨터에게 어떠어떠한 기능을 넣어줘라는 식으로 명령어를 사용하게 됩니다. 하지만 컴퓨터는 사람의 말을 못알아들으며 기계어나 어셈블리어 등을 이행할 수 있는 게 컴퓨터입니다. 그렇기에 우리들은 컴퓨터가 알 수 있게 프로그래밍 언어를 이용하여 컴퓨터의 프로그램 구축을 합니다. 이러한 과정인 프로그래밍이라 하며, 앞에서 말한 것처럼 프로그래밍을 하기 위해서는 프로그래밍 언어를 알고 있어야하며, 자료구조, 알고리즘 등 다양한 기술을 알고 있으면 좋습니다.

 

 

 

 

 

자료구조

자료구조는 컴픁처 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직 관리, 저장을 의미합니다. 즉, 데이터들에 대한 관계나 모임 등을 다양한 함수와 명령 등이 자료구조라고 합니다. 그리고 자료구조는 데이터를 구조적으로 표현하는 방식이라 말을 하지만 알고리즘을 배우기 위한 기초적인 이론이라는 말이라도 말합니다. 그렇기에 자료구조를 알지 목하는 경우에서 알고리즘을 공부를 하게 된다면 많은 어려움이 있을 것입니다. 마치 알파벳을 모르는데 영어를 하는 것과 같다고 보시면 되며, 자료구조를 잘 활용을 할 수 있다면 효율적인 알고리즘을 사용할 수 있습니다.

 

 

 

자료구조의 분류

자료구조는 자료의 특성이나 기능, 사용법, 수행하는 연산의 종류, 구현에 필요한 기억 공간 크기에 따라 여러가지 종류로 나누어져 그 중에서 가장 알맞는 자료구조를 선택할 수 있습니다.

자료구조의 종류로는 자료형의 따라 분류하는 단순 구조와 자료간 관계가 1대1인 선형 구조, 1대 여러개 혹은 여러개 대 여러개인 비선형구조, 파일 구조로 분류가 되어 있습니다.

 

 

구현에 따른 분류

배열 : 가장 일반적인 구조호 메모리 상에 같은 타입의 자료가 연속적으로 저장됩니다. 자료값을 나타내는 가장 작은 단위가 자료를 다루는 단위입니다.

 

튜플 : 둘 이상의 자료형을 묶음으로 다루는 구조입니다.

 

연결리스트 : 노드를 단위로 하며, 토드는 자료와 다음 노드를 가리키는 참조값으로 구성이 되어 있습니다. 노드가 다음 노드로 아무것도 가리키지 않으면 리스트는 끝이 납니다.

 

원형 연결 리스트 : 각 노드는 다음 노드를 가리키고, 마지막 노드가 처음 노드를 가리키는 연결 리스트입니다. 

 

이중 연결 리스트 : 각 노드는 이전 노드와 다음 노드를 가리키는 참조값으로 구성됩니다. 처음 노드의 이전 노드와 마지막 노드의 다음 노드는 없습니다.

 

환형 이중 연결 리스트 : 처음 노드가 이전 노드로 마지막 노드를 가리키고, 마지막 노드가 다음 노드로 처믐 노드를 가리키는 이중 연결 리스트입니다. 

 

해시 테이블 : 개체가 해시값에 따라 인덱싱 됩니다.

 

 

형태에 따른 분류

선형 구조

 

스텍 : 스텍 자료구조에 먼저 저장된 것이 꺼내어 쓸 때는 제일 나중에 나옵니다. 반대로 가장 최근에 저장된 것이 꺼내어 쓸 때는 제일 먼저 나옵니다. 만약에 자료들의 나열 순서를 바꾸고 싶다면 스택에 집어 넣었다가 꺼내면 역순으로 바뀝니다.

 

큐 : 스택과 반대로 큐 자료구조에 먼저 저장된 것이 제일 먼저 나옵니다. 반대로 가장 나중에 저장된 것이 꺼내어 쓸 때는 가장 나중에 나옵니다.

 - 환형 큐 : 한정된 길이 안에서 부수적인 작업 없이 읽고 쓰기를 할 수 있는 큐입니다.

 

덱 : 양쪽에서 넣기와 빼기를 할 수 있는 일반화된 선형구조입니다.

 

비선형 구조

 

그래프 : 꼭짓점과 꼭짓점을 잇는 변으로 구성됩니다.

- 유향 그래프, 무향 그래프 : 변이 방향성을 갖는지 아닌지에 따른 그래프의 분류로 무향 그래프는 순환이 없는 연결 그래프입니다. 그리고 유향 그래프는 변의 방향은 보통 부모를 가리키도록 구현되어 있습니다.

 

트리 : 뿌리와, 뿌리 또는 다른 꼭짓점을 단 하나의 부모로 갖는 꼭짓점들로 이루어진 구조, 부모 자식 관계는 변으로 표현됩니다. 

 - 이진 트리 : 자식이 최대 두대인 트리

 - 힙 : 이진 트리의 일종으로 이진트리에 어떤 특성을 부여한 것이라 할 수 있습니다.

 

추상적 자료형 관계

추상적 자료형은 알고리즘이 문제를 해결하는데 필요한 자료의 형태와 자료를 사용한 연산들을 수학적으로 정의한 것입니다. 자료구조는 추상적 자료형이 정의한 연산들을 구현한 구현체를 가리키는 말입니다.

스택의 예로는 함수 호출을 관리하기 위해 후입선출의 성질을 가진 추상적 자료형이 필요하니 pop과 push를 가지도록 스택이라는 추상적 자료형을 정의하고, 그것을 수현해서 함수 호출을 관리하는데 사용하는 구현체, 즉 자료구조를 콜 스택이라고 부르는 것입니다.

 

 

마무리

자료구조는 프로그래밍에서 꼭 필요한 존재냐고 물으신다면 필요한 존재라고 말을 할 수 있습니다. 물론 자료구조를 모른다고 프로그래밍을 못하는 것은 아닙니다, 그런데고 자료구조가 필요한 이유는 자료구조자체는 잘 변하지 않아 한번배워두면 계속 사용할 수 있으며, 자료구조를 사용하는 이유 중에 하나는 자신이 가지고 있는 프로그래밍 실력을 상승시킬 수 있고 보다 편리한 방법으로 프로그래밍을 할 수 있기 때문에 자료구조를 배워두어야 한다고 합니다.

 

끝으로 프로그래밍이나 IT분야에 대한 궁금증이나 어려움, 고민이 있는 분들은 

아래의 링크를 참고하시고 링크를 통해 무료컨설팅이 진행되고 있으니 많은 참여로 IT분야에 인재로 성장하기를 바라겠습니다.

 

 

KG아이티뱅크학원

KG아이티뱅크학원 전화번호ㅣ 상담전화ㅣ 문의전화ㅣ수강전화ㅣ수강료전화ㅣ상담문의전화

it.xn--kg-jz1j901a9vcw7s0ie.kr

 

 

IT상담

IT관련 분야 취업, 진학등 궁금하신 점을 1:1 무료상담을 하고 있습니다. 간단한 기본정보와 함계 본인의 관심사, 분야, 지식등을 적어주시면 됩니다. 최대한 솔직히 답변해주시면 도움이 됩니다.

form.office.naver.com

 

+ Recent posts