자바 자료구조 강의 추천!
자바 자료구조 강의를 추천하기에 앞서 자료구조가 무엇인지 왜 배워야 하는지에 대해서 생각해 봐야 합니다. 무작정 공부하는 것보단 이유를 찾는 것이 중요하기 때문이죠. 그렇기 때문에 조금 길지만 자료구조를 왜 배워야 하는지 설명해보겠습니다.
많은 데이터를 어떻게 다뤄야 하는지에 대한 과목 '자료구조'
개발자 또는 엔지니어가 되기 위해서 준비해야 하는 것들이 있습니다. 특성화고나 대학교 그리고 학원이나 독학을 하더라도 빼먹으면 안되는 몇 가지고 공부가 있습니다. 그중 하나는 자료구조입니다. 자료구조를 배우는 이유는 알고리즘적으로 생각하고 컴퓨팅적 사고력을 늘리기 위함도 있지만 좀 더 중요한 이유는 데이터를 어떻게 잘 다룰지에 대해 기초 지식을 쌓기 위해서 입니다.
개발자가 되면 주로 하는 일은 설계와 코드 작성인데요. 설계와 코드 작성 안에는 항상 데이터가 존재하기 때문에 데이터에 대해서 고려하게 됩니다. 데이터를 어디에 저장할지, 데이터를 어떻게 저장할지, 데이터를 어떻게 가공할지, 데이터를 어떻게 꺼낼지, 데이터를 어떻게 사용할지 이런 부분들에 대해서 당연스럽게 고민합니다. 몇 십, 몇 백 개의 데이터를 다루는 것이 아니라 서비스가 커질수록 다루게 되는 데이터는 몇 십억 몇 백억, 조 단위의 데이터를 다루기 때문이죠. 단순히 저장만 한다면 자료구조를 배울 필요가 없으나 데이터를 저장하는 이유는 사용하려고 저장합니다.
예시로 배열과 같은 선형적인 자료구조에서 필요한 데이터를 찾으려고 할 때는 앞에서부터 순차적으로 찾아야 합니다. 찾기 전까지는 배열 어디의 특정 데이터가 들어있는지 알 수가 없죠. 만약에 배열의 크기가 10억이고 찾는 데이터가 5억 번 째에 있다면 인덱스 0부터 5억 번 째까지 순차적으로 찾아야 합니다. 컴퓨터가 5억 번 째 데이터를 찾는 데 0.5초가 걸린다고 가정하면 특정 데이터 10개를 찾는데 평균적으로 5초가 걸릴 수 있습니다. 5초의 시간은 매우 비싼 시간입니다. 웹페이지를 로딩하는 시간이 5초가 걸리거나 앱을 켰는데 5초를 기다리고 사용할 수 있다고 생각해 보세요. 당장 꺼버릴 겁니다.
그렇기 때문에 시간이라는 것은 매우 중요한 요소이며 제한된 자원안에서 가장 효율적인 방법을 찾는 것이 자료구조입니다.
현실 세계의 데이터를 컴퓨터의 세계로 모델링 하는 것이 '자료구조'
원론적으로 자료'구조'를 얘기하면 표, 그래프, 텍스트, 파일 등 이런 부분도 자료 구조라고도 얘기할 수 있으나 컴퓨터 공학 과목으로 배우는 자료구조는 프로그래밍 언어로 특정 목적을 위해 사용되는 몇 가지 자료구조에 대한 원리와 구현에 대해서 배웁니다. 그 과정에서 현실 세계에 존재하는 데이터를 어떻게 컴퓨터의 세계로 옮길 수 있을지에 대한 문제 해결 능력이 향상됩니다.
예시로 현실 세계의 친구 관계와 호감도를 그래프적으로 표현하면 다음과 같습니다. 이러한 관계를 컴퓨터의 세계로 옮긴다면 인접 행렬, 인접 리스트 방식이 있습니다. 이렇게 현실 세계의 데이터를 컴퓨터의 세계로 모델링 하는 법을 기초적으로 배우는 것이 자료구조입니다.
이론만 아는 것이 아니라 구현할 줄 알아야 한다
자료구조에 대한 이론을 아는 것도 중요하지만 구현도 중요합니다. 이론적인 자료구조를 고민하며 자기 손으로 실제로 구현해 봐야 합니다. 이론만 알고 끝내는 것이 아니라 실제로 구현해야지 이해도가 높아집니다. 그리고 이론을 컴퓨터의 세계의 구현체로 옮기는 것도 실력입니다. 누군가가 도구를 만들어주지 않아 손가락을 빨고만 있어야 한다면 앞으로의 방향을 개발자나 엔지니어로 잡는 것보단 개발은 취미로 배우시는 것이 낫습니다. 성장 한계선이 명확합니다.
세상에 이론은 넘쳐나지만 실제로 이론을 가지고 문제 해결을 할 수 있는 사람은 많이 없습니다. 이론을 만드는 것도 중요하고 구현하는 것도 중요합니다. 둘 다 잡을 수 없다면 최소한 구현에 대한 부분은 놓치지 말아야 합니다. 개발자나 엔지니어가 하는 일이 무에서 유를 만드는 일입니다.
자료구조를 공부하는 좋은 방법 '정공법'
시간이 부족한 우리에게 자료구조를 공부하는 좋은 방법은 강의를 듣고 내용을 정리 후에 실제로 구현하면 됩니다. 굉장히 단순하고 뻔한 방법이지만 그것보다 좋은 것은 없습니다. 기초 공학을 공부할 때는 정공법으로 도전해야 합니다. 복잡한 자료구조는 손으로 그려가며 흐름을 익혀야 합니다. 아무리 좋은 강의를 들어도 이해가 된다고 넘어가면 IQ가 높지 않은 이상 다음주면 반드시 까먹습니다. 공부하는 시간을 투자하는 만큼 밀도 있게 사용하고 확실히 해야 합니다. 컴퓨터 공학은 다른 과목처럼 단순히 외우는 공부가 아니고 이해하고 자기 것으로 만들어서 응용해야 하는 학문입니다. 자료구조는 더욱 그렇습니다.
해당 자바 자료구조 강의를 추천 하는 이유
국내에 자바로 다양하고 기본적인 자료구조 커리큘럼을 다루는 강의가 희소합니다. 일반적으로는 자바의 collection 라이브러리에 대한 강의이거나 또는 연결 리스트, 스택, 큐에서 끝나는 강의이거나 알고리즘과 자료구조를 합친 강의들이 대부분입니다. 물론 그런 강의들도 좋으나 자바 '자료구조'에만 초점을 맞추는 강의는 더 희소합니다. 만약에 자료구조에만 초점을 맞춰서 집중적으로 공부하고 싶다면 해당 강의를 권장 드립니다. 또한 많은 시간을 들여야 하는 강의가 아니라 핵심적인 부분만 빠르게 설명하며 진행합니다. 그러므로 강의를 듣는 시간에 부담 가지지 말고 빠르게 강의를 듣고 노트를 통해 정리하고 구현하는 방식으로 공부하면 단기간 내에 '자료구조'에 대한 정리가 될 겁니다.
https://www.codelatte.io/courses/java_data_structure