예고생의 IT대학 도전기

예고생의 IT대학 도전기7 - 자료구조 (우선순위 큐 같은거 꼭 알아야할까?)

dodo4723 2024. 2. 17. 10:10
728x90
반응형

사용자가 특정 차트를 고르면, 전 종목의 과거(10년) 차트들을 모두 탐색하여 가장 유사한 차트 10개를 골라 사용자에게 보여줍니다.

 

비슷한 차트 검색기

 

비슷한 차트 검색기

전 종목의 최근 10년간 모든 차트를 탐색합니다. 내 종목의 차트는 과연 상승하는 차트일까요?

www.similarchart.com

예고생의 IT대학 도전기 개요

 

20살까지 중학교 수학도 모르던 예고생의 IT대학 도전기 Start! (과목별 정리)

사용자가 특정 차트를 고르면, 전 종목의 과거(10년) 차트들을 모두 탐색하여 가장 유사한 차트 10개를 골라 사용자에게 보여줍니다. 웹프로젝트 링크 비슷한 차트 검색기 전 종목의 최근 10년간

similarchart.com

 




자료구조

2학년 1학기 전공필수과목인 자료구조입니다. (2020년 수강)

 


 

성적

A0 (4.3)

 


 

딱 봐도 중요해 보인다

개발자에게 자료구조가 중요하다는 말은 자주 들었습니다. 확실히 '자료구조'라는 과목 이름만 들어도 지나쳐선 안될 과목 같은 느낌입니다.

 

원래는 대면인 수업이 코로나로 인해 비대면 수업이 되었습니다. 하지만 전 오히려 비대면 수업이 더 집중이 잘 되고 수업을 따라가기가 수월했습니다. 대면 수업은 혹시나 놓치는 부분이 있을까 봐 처음부터 끝까지 녹음을 하는 경우가 많았는데, 동영상 수업은 놓친 부분이 있으면 다시 돌려 들으면 되어 편했습니다.

 

교수님께서도 저희 학과에 처음 오셨는데 처음부터 비대면 수업을 하게 되어 교수님 얼굴도 모른 채 수업을 진행했습니다.

수업 방식이 조금 특별했는데, 교수님께서 vscode를 띄우시고 자료구조 코드를 직접 작성하시면서 수업이 진행되었습니다. 아무것도 없는 상태부터 코드가 차근차근 작성이 되니, 훨씬 이해하기 편했던 것 같습니다.

 

중간고사까지는 배열, 리스트, 스택, 큐 등의 선형 자료구조를 배웠습니다. 여기까지는 이해하기 쉬웠습니다. 그런데 그 이후에는 이진트리, 레드블랙트리, 다양한 그래프, 힙 등의 자료구조가 등장하는데, 저번학기 이산수학에서 트리와 그래프를 배웠지만 방학사이에 거의 까먹어서 다시 따라가기가 쉽지 않았습니다.

 




C++은 익숙하지 않아

하지만 수업을 듣는 대부분의 학생들 입장에서 이 수업의 힘든 점이 있었습니다. 아직 C++을 배우지 않은 상태로 C++로 자료구조를 배운다는 것입니다.

 

저희 학과는 C++을 2학년 1학기에 배웁니다. 자료구조와 같은 학기에 배우죠. 대부분이 C++에 대해 잘 모르는 상태에서 대부분의 시간을 C++를 이용해 자료구조 코드를 작성하니 힘들어하는 친구들이 꽤 있었습니다.

 

또한 C++로 자료구조를 하려면, 포인터에 대해 잘 알고 있어야 합니다. 자료구조 구현 대부분에 포인터가 들어가더군요.

 

하지만 저는 다행히 어느 정도 2학년 1학기 준비를 해 둔 상태였습니다. 바로 전 학기에 C언어를 배우고 C++도 흥미가 생겨 방학 때 책 한 권을 읽으며 예습을 한 것이 큰 도움이 되었습니다.

 

그리고 전 다행히 이런 자료구조를 직접 구현해 보는 게 꽤 재미있게 느껴졌습니다. 그래서 자연스럽게 성적도 잘 나온 것 같네요!

 




정말 실제 프로그램들에 쓰이는 건가?

자료구조를 배우면서도 아직 감이 오지 않는 부분이 있었습니다. '주변에 수많은 프로그램들도 과연 이런 자료구조를 사용해서 만드는 걸까?'라는 의문이 계속 들었던 기억이 납니다.

 

그리고 3학기 동안 프로그래밍을 열심히 배웠지만, 이 배운 내용들로 저희가 자주 접하는 수준의 프로그램들을 만들 수 있는지조차도 의문이었습니다. 배운 프로그래밍의 대부분이 그냥 파일 한 개 안에서 만드는 가위바위보 게임 정도의 수준이어서 감이 오지 않았던 걸까요?

 

뭔가 직접 웹페이지를 만들어 결과가 눈에 보이거나, 게임을 만들어 직접 플레이하는 그런 시각적인 요소가 없어서 그런 걸까요?

 

이렇게 계속 공부하다 보면 언젠간 나만의 근사한 게임이나 웹페이지를 만들 수 있겠지라고 생각하며 계속 버텨왔던 것 같습니다. 3학년이 끝난 지금, 학교에서 의아한 채로 배웠던 내용들이 결과적으로는 아주 소중한 자산이 되었습니다.

 

이제는 어떤 프로그램이든 자료구조도 빠질 수 없다는 것을 알고 있습니다.

 




결론

제가 진행한 웹 프로젝트가 있는데, 다양한 자료구조를 사용하여 성능을 꽤 높일 수 있었습니다. 설마 진짜로 우선순위 큐를 실전에서 사용할 줄은 몰랐네요.

 

한줄평 : 중요하다고 하는건 다 이유가 있다

반응형