지금은 백엔드 프레임워크 중 Spring을 위해 자바를 공부하고 있는데,
이전에는 Django를 이용해서 백엔드 개발을 했었다.
그때마다 백엔드 개발은 재밌는데, 코딩테스트는 아무리 봐도 수학문제같고...이게 무슨 연관이 있나?라는 생각이 들었다.
그러다가 Django프로젝트 중 필요한 데이터만 필터링해주는 구현을 해야 했던 경험이 있다.
이때 몸소 깨달았다. 아! 백엔드 구현은 알고리즘을 기반으로 하는 구나!
코테 준비를 하게 되면 이전에 자연스럽게 자료구조-알고리즘을 학습한다. 그리고 완전탐색과 이외의 수많은 알고리즘을 습득해야 한다.
그러면 이 "필요한 데이터만 필터링"하는 구현은 완전탐색으로 안되나? 무지성으로 하면 당연히 된다.
근데 내 프로젝트가 실사용자가 10명도 못채웠기에 망정이지, 정말 큰 프로젝트로 배포된다면 어떻게 될까?
모든 데이터가 완전탐색으로 필터링 되면 ? 당연히 그렇게는 배포가 승인되진 않겠지만 여기서부터가 왜 우리는 알고리즘을 알아야 하고, 코딩테스트를 통과해야 하는지의 이유가 담겨있다.
내 개인적인 약점은.. 그래프탐색이다. DFS, BFS.....
다른 사람 풀이봐도 가끔 "다들 이걸 알아듣는거지?"라는 생각이 들 때가 있다. 나도 따라잡을 거야...👀
카카오나 삼성 코테를 요즘 보면 구현도 많지만 그 외의 알고리즘 문제를 보면 그래프탐색이 제일 많고, 어렵고, 또 정답율도 낮다. 코너케이스까지 맞춰야 하는데 그래프 탐색이 더 어려워서 인 것 같기도 하다.
어렵다고 포기하면 안되는게, 달리 말하면 이걸 정복하면 다른 사람들보다 앞서가는 거 라고 생각한다. 내가 어려우면 다른 사람들도 어려울 테니까!!
손을 못대겠는 DFS, BFS 문제들은 단순히 저것만 나오는 게 아니라, 구현+DFS, BFS, + DP 이렇게 섞여서 나오는 것 같더라(예로 삼성 코테 기출중에 유명한 상어 문제가 있다.)
섞여서 나오는 거를 풀다보면 원리를 빠삭하게 알고 있어야 내가 자유자재로 쓸 수 있다는 것이다. 이번 제로베이스 강의 중 DFS.BFS 는 더 더 신경써서 들어야 겠다..! 여기다가도 포스팅 해봐야 겠다. :)