[자바인강 5주차] 자료구조
자료구조를 다루기 전에도 '스택'이니 '힙'이라는 단어는 앞선 강의에서 언급됐다. '힙'이 좀 무겁고, 장기적인 메모리라면, '스택'은 가볍고 단기적인 메모리다 이런 식으로 이해를 했는데, 힙과 스택이 어떤 면에서 다른 것인지는 이번 자료구조 강의를 통해서 알 수 있었다. 스택과 힙 모두 일종의 자료구조 종류를 가리키는 것이었다.
가장 먼저 배우는 자료구조형은 바로 '배열(Array)'이다. 배열의 특징은 자료를 저장할 공간을 미리 할당해야 한다는 점이다. 할당한 공간을 비워둘 수는 없다. 다음은 '연결리스트(LinkedList)'인데, 이는 말 그대로 링크화된 리스트다. 앞의 상자는 뒤의 상자를 가리키는 링크를 갖고 있고, 이렇게 앞뒤 상자들이 연속적으로 연결된다. 배열과 달리 연속적인 공간을 할당하지 않으므로, 자료를 중간에 추가하거나 제거하는 것이 쉬운 편이다.
다음은 '스택(Stack)'. 스택은 가장 나중에 입력된 자료가 가장 먼저 출력되는 자료구조다. 쌓아 둔 책탑과 같다. 가장 나중에 올린 책을 가장 먼저 옮겨야만 맨 마지막 책에 손을 댈 수 있다. 자바 코딩에서 적히는 함수가 이런 스택 메모리 형태로 저장되는데, 그렇기 때문에 먼저 읽히는 함수와 나중에 읽히는 함수의 순서가 자연스럽게 정해지는 것이라 한다. 반면 '큐(Queue)'는 반대로 가장 먼저 입력된 자료가 가장 먼저 출력되는 구조다.
'힙(Heap)'은 우선 큐(Priority queue)이면서 이진 트리 형태를 가진 비선형 자료구조다. 이진 트리는 데이터를 크기의 따라 두 갈래로 나누어서 저장하는 아래와 같은 형태를 일컫는데, 이렇게 저장하면 자료 검색에 걸리는 시간이 대폭 줄어든다고 한다.
이밖에도 그래프와 해싱이라는 자료 구조가 있는데, '그래프(Graph)'는 객체들 간의 노드와 링크의 방향과 값을 줄 수 있어서 GPS나 지도 제작에 자주 쓰이는 구조라고 한다. '해싱(Hashing)'의 경우는 검색에 알맞은 자료 구조로, 자료마다 인덱스의 역할을 하는 키(key)값을 지정할 수 있어서 찾고자 하는 자료에 바로 접근할 수 있도록 한다.
어느덧 자바인강을 들은 지 5주가 되었다. 간단하게 소회를 정리하자면, 자바를 애초에 8주 과정으로 수업을 듣고 뗀다는 것은 '불가능'한 것 같다. 이번 자료구조 설명에서 강사님이 그랬다. 대학교에서 한 학기 분량으로 자료구조를 다룬다고, 이걸 전부 다루는 것은 어려우니 간단한 설명과 예제만 다룰 것"이라고. 천재가 아니고서야 간단한 설명과 예제만 가지고서는 커리큘럼의 내용을 전부 소화할 수 없었다. 저번 주차부터 막히던 부분들이 계속 이어져서 5주차부터는 뭔가 "내가 이걸 왜 듣는 건가" 하는 마음도 들었다.
그런데 제대로 이해되지 않더라도 일주일의 얼마 정도의 시간을 '강제적'으로 코딩 공부에 할애하면서 생긴 것이 있다. 바로 '관심'이다. 자바에 대한 얕은 지식이라도 생기니, 책을 봐도 얼추 뭐가 보이는 것 같고, 코딩 관련 사이트를 봐도 흥미가 든다. 패캠 수업을 듣기 전에는 아주 가벼운 마음으로 하는 둥 마는 둥 들었던 칸 아카데미의 자바스크립트 커리큘럼도, 이제 와서 다시 들어보니 훨씬 이해하기 편하고 재미있어졌다.
자바, 자바스크립트, 파이썬 모두 데이터 자료형이나 연산자 부분에서는 비슷한 형태와 구조를 갖고 있다. 그러니 자바에 대해 한 달 동안이나 수업을 들었던 것은 이 모든 언어에 대한 기본 지식을 쌓는 효과도 있었다. 덕분에 자바가 아닌 다른 언어를 배울 때의 장벽도 좀 낮아진 느낌이다.
#패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강