전공 과목들을 공부하면서 놓친 부분이 참 많았던 것 같고, 까먹은 내용도 참 많다. 그 때에는 이러한 전공 지식들이 얼마나 중요한 것인지 잘 몰랐던 것 같다. 그냥 넘어간다면 앞으로 한계를 느낄 것 같아 모든 전공 지식들을 다시 복습할 필요성을 느꼈고, 복습은 자료구조부터 차근차근 시작해보려 한다. 지금은 너무 초조해서 시간 낭비를 하는 것은 아닐까, 빨리 급한 공부부터 해야하지 않을까 걱정도 되지만, 이 짧은 기간이 앞으로의 개발자 인생에 피가 되고 살이 되었으면 좋겠다.
교재는 다시 볼 생각은 없고, 2학년 당시 공부했던 노트를 복습하는 것으로 하겠다. 노트의 대부분은 교수님의 판서를 통해 공부한 내용이며 슈도 코드나 예제, 그림들 또한 판서에서 비롯한 것이다. 공부에 사용할 프로그래밍 언어로는 언어는 C, Python이다.
📌자료구조란 무엇인가?
자료구조(data structure)란 말 그대로 자료의 구조를 말한다. 자료를 어떠한 형태로 저장하여 연산을 할 것인가는 매우 중요하게 고려할 부분이다. 가령 주소록 프로그램을 만든다고 생각해보자.
이 프로그램에서 주소록은 매우 간단한 형태로 name, number로 구성되어 있다.
주소록이라는 data를 어떠한 자료구조로 저장할까?
1. 두 개의 배열에 나누어 저장
name 배열 + number 배열
char name[100][3];
char number[100][4];
2. 하나의 배열에 저장
data 배열
struct record{ //name과 number를 하나의 구조체로 묶음
char name[3];
char number[4];
};
struct record data[100];
두 가지 방식으로 주소록을 표현했다. 두 방식은 장단점이 있을 것이므로 만드려는 프로그램에 맞게 선택해야 할 것이다. 가령 이름에 맞추어 데이터를 정렬하려는 경우, 두 개의 배열에 나누어져 있다면 이름에 따른 번호를 함께 정렬할 수 없으므로 구조체로 묶는 방법을 택해야 할 것이다.
이렇듯 올바르고 효율적인 자료구조를 선택하는 것이 개발자의 능력에 있어 기본적인 소양이라고 할 수 있을 것이다. 이는 알고리즘과도 밀접한 연관이 있어 중요한 기초 과목이다.
다음에는 어떠한 자료구조가 있고 어떻게 연산이 이루어지는지 알아보겠다.