사용자가 특정 차트를 고르면, 전 종목의 과거(10년) 차트들을 모두 탐색하여 가장 유사한 차트 10개를 골라 사용자에게 보여줍니다.
비슷한 차트 검색기
전 종목의 최근 10년간 모든 차트를 탐색합니다. 내 종목의 차트는 과연 상승하는 차트일까요?
www.similarchart.com
20살까지 중학교 수학도 모르던 예고생의 IT대학 도전기 Start! (과목별 정리)
사용자가 특정 차트를 고르면, 전 종목의 과거(10년) 차트들을 모두 탐색하여 가장 유사한 차트 10개를 골라 사용자에게 보여줍니다. 웹프로젝트 링크 비슷한 차트 검색기 전 종목의 최근 10년간
similarchart.com
알고리즘
2학년 2학기 전공필수과목인 알고리즘입니다. (2022년 수강)
성적
A+ (4.5)
전역 ~ 복학 전
저는 전역 4~5개월 전부터 진로에 대해 진지하게 고민해 보기 시작했습니다. IT관련 직업들은 어떤 것들이 있는지, 취업은 어떻게 준비해야하는지, 학부 커리큘럼은 어떻게 되는지, 어떤 걸 미리 공부해놓아야 할지 등 최대한 조사를 많이 했습니다. 22년 1월 즈음 코로나가 마지막으로 기승을 부리고 끝나가던 시기입니다.
코로나가 IT붐을 일으켜서 그런지 여기저기 정보들이 매우 많았습니다. 입대 전에는 주로 게임 개발을 했지만, 전역 후에는 게임 개발 뿐만이 아닌 다양한 서비스들을 개발할 수 있다면 좋겠다고 생각했습니다. 사람들이 사용하는 서비스를 직접 만들어 보기 위해서는 백엔드(서버) 개발 역량을 키우는 것이 좋겠다고 판단하였습니다.
군대에서 의미없는 시간이 많았지만, 대신에 미래를 위해 휴가를 최대한 많이 쌓아놨습니다. 여기 있어봤자 의미 없고 빨리 나가서 취업준비를 해야겠다고 생각했습니다. 그렇게 75일 휴가를 모아 3월 중순에 두 달 반을 빨리 전역했습니다.
아무리 그래도 저도 사람인지라 2주정도는 하고 싶은 것들을 하며 놀았습니다. 그 후 웹 백엔드 개발자가 되기 위한 첫걸음을 내디뎠습니다. 백엔드 개발자여도 일단 기본적인 프론트엔드 지식이 필요하다고 하여 html, css, javascript, 리액트 강의를 결제하여 1달동안 수강했습니다.
그 후, 5월부터는 코딩테스트 준비를 하게 됩니다. 코딩테스트 관련 책을 2권 읽으며 백준 문제를 풀어나갔습니다. 제 목표는 복학 전까지 백준 플래티넘을 달성하기입니다. 매일매일 최소 한 문제씩 풀어가며 코딩테스트에서 주로 나오는 알고리즘들을 익혔습니다. 그 흔적은 제 옛날 블로그에서 볼 수 있습니다.
그렇게 플래티넘을 달성하고, 복학하여 알고리즘 수업을 마주하게 됩니다.
선택과 집중
알고리즘 수업 자체는 열심히 듣지 않았습니다. 어차피 다 아는 내용이라고 생각하며 방심했을지도 모르죠. 수업시간엔 다른 것을 공부했습니다. 대부분이 아는 내용이긴 했지만, 대학 수업은 수학적으로 증명하는 부분이 많더군요. 백준 문제를 푸는 것만으로는 살짝 부족했습니다.
기말고사 때 선택과 집중을 해야하는 일이 있었습니다. 알고리즘 과목과 인공지능 과목이 연달아 시험이 있었는데, 다른 시험들에 집중하고 나니 하루밖에 시간이 없었습니다. 하필 인공지능 과목은 6 전공 중 제일 양이 많았죠. 그래서 알고리즘 공부는 그냥 기존에 제가 알던 지식으로만 도전해 보자 하고 인공지능 공부에 집중하였습니다.
그렇게 두 시험을 본 후, 성적이 나왔는데 알고리즘은 아주 아슬아슬하게 A+ 커트라인에 걸쳐있더군요. 그리고 인공지능 과목도 A0를 받으며 결론적으로 아주 좋은 선택과 집중이었습니다.
코딩테스트에서 나오는 알고리즘들은 실제 프로그램에 쓰일까?
알고리즘 자체에 대한 이야기를 좀 하자면, 당시의 저는 알고리즘 공부를 하며 이 알고리즘들이 정말 실제 프로그램에 쓰이는지 감이 오지 않았습니다. 그냥 코딩테스트를 위한 공부를 했을 뿐이죠.
하지만 웹 프로젝트를 진행하며 알고리즘 공부의 중요성을 깨달았습니다. 제 웹프로젝트는 특정 종목의 차트를 고르면, 그 차트와 비슷한 과거 차트들을 탐색해 보여줍니다.
단순히 생각해 봅시다. 특정 32일 치 차트와 비슷한 가장 비슷한 과거 차트를 찾으려고 합니다. 그러면 어느 정도의 연산이 필요할까요?
64(비교일 수) X 2600(한국주식 전 종목) X 2400(10년 치 주가데이터) X 4(시가, 고가, 저가, 종가 고려) = 약 16억
그냥 무작정 탐색하면 사용자 요청 한번 당 16억의 연산이 필요합니다. 1초에 2천만 번의 연산을 한다고 알려진 파이썬으로는 80초가 걸립니다.
시간도 문제지만 메모리도 문제입니다. 클라우드 환경에 서버를 띄우려면 1GB 이내의 메모리를 사용해야 합니다. 그냥 전 종목의 10년 치 주가 데이터를 메모리에 올리는 것만 해도 거의 1GB입니다.
이 문제를 해결하는 데 이제까지 했던 알고리즘 공부가 도움이 많이 되었습니다. 근 2년 동안 매일 1문제 이상 거의 1000문제를 푼 보람이 있던 것 같네요.
결론
한줄평 : 가장 내 인생에 영향을 많이 끼친 과목
'예고생의 IT대학 도전기' 카테고리의 다른 글
예고생의 IT대학 도전기9 - C#프로그래밍의 이해 (유니티로 게임만들다 망함) (0) | 2024.02.17 |
---|---|
예고생의 IT대학 도전기8 - C++ 프로그래밍 (객체지향은 C++ < JAVA 아냐?) (1) | 2024.02.17 |
예고생의 IT대학 도전기7 - 자료구조 (우선순위 큐 같은거 꼭 알아야할까?) (0) | 2024.02.17 |
예고생의 IT대학 도전기6 - 이산수학 (그래프? 트리? 이게 수학이야?) (0) | 2024.02.17 |
예고생의 IT대학 도전기5 - C 프로그래밍 및 실습 (포인터가 그렇게 어렵다며?) (0) | 2024.02.17 |