필자는 처음에 개발을 접하게 되면서 자료구조가 이런 게 있다는 것까지만 인지하고 있었다. 그리고 그것을 사용하기까지만 딱 공부를 한 상태였다. 그렇기에 지금까지 깊게 공부하지 않은 상태였지만 이번에 제로베이스 백엔드 부트캠프를 직접적으로 느끼면서 자료구조에 대해서 정말 깊게 공부하는 상태이다.
예전에는 자료구조를 그렇게까지 깊게 공부할 필요가 없다고 생각했지만, 지금은 좀 다른 말을 하고 싶다. 이번에 자료구조를 지겹도록 사용하면서 느끼는 거지만 자료구조를 떠나서 언어에 대해서 정말 지겹도록 사용하는데 그거에 있어서는 자료구조를 공부하면서 언어에 대한 숙련도가 높아진다.
이게 왜 장점이냐?? 내가 자료구조를 국비학원에서 수료할 때까지만 해도 기초적인 에러에서 많이 막힌 적이 있다. 이는 지금 생각해 보면 그저 해당 언어에 대해서 기초적인 부분이 부족해서 본 에러도 많다는 생각이 든다. (EX) Null Point 등등)
하지만 여전히 효율적이진 않다고 생각한다. 자료구조를 깊게 공부하기보다는 더욱 알고리즘을 공부하는 게 훨씬 나에게 얻어지는 게 많다고 생각한다.
제로베이스 부트캠프에서 어느 정도 알고리즘에 대해서 공부하고 있고, 지금도 진행형이다. 하지만 누구에게나 공통점인 사항이겠지만 어렵다!! 알고리즘을 이해하고 이러한 알고리즘을 내가 정확하게 숙지하기까지 정말 오래 걸린다. 설령 단기간에 알게 된다고 하더라도 정말 단기간에 피나는 노력이 필요하지 않나 싶다. (물론 필자 생각…. 사람마다 다르니 말이다!)
그렇게 알고리즘을 공부했다면 누구나 테스트에 들어간다. 코딩 테스트를 통해서 내가 정말 실력이 있는지 테스트하고, 하나씩 알고리즘에 대해 숙지하게 된다.
그렇다면 알고리즘은 정말 필요할까?
필자는 알고리즘은 알고 있으면 좋다는 생각이 들었다. 처음에 필자는 코딩테스트에서 알고리즘이 필요하다고는 생각하지 않았다. 그렇기에 처음에 취업을 준비할 때도 알고리즘 공부를 하지 않았다. 하지만 지금은 얘기가 다르다!!
처음에 공부하면서 아 이런 것까지 있어? 라는 생각이 들었고, 어떻게 보면 필요하다는 생각이 들었다. 왜냐하면 알고리즘이라는 단어는 문제를 해결하기 위한 절차나 방법을 의미한다. 그렇기에 굳이 코테에 집중하는 것이 아닌 여러 방면으로 사용이 될 것이다.
[활용 방안 예시]
일종에 연결리스트를 비유한다면 계속해서 연결하는 것인데 이러한 활용적인 방면으로 인터넷을 연결한다거나 서버를 연결한다거나 이렇게 연결 지어서 생각을 해본다면 정말 중요한 마인드가 아니지 않나 싶다!
그렇기에 알고리즘 공부를 꼭 코딩테스트를 위한 것이 아니라는 말을 하고 싶었고 다들 한 번쯤은 경험을 해보면 정말 좋을 거 같다. 은근히 고통 속에서 즐거움도 있다....ㅎ)
이렇게 내가 알고 있는 자료구조
알고리즘
코딩테스트
에 대한 개인적인 소견을 이야기 해봤다. 만약 처음 학원에 다니거나 부트캠프 코스를 보고 그중에 알고리즘에 대한 파트가 없다면 이글을 보고 부디 알고리즘과 자료구조를 꼭 공부해 보시기를 바란다. 꼭 기업에 대한 코딩테스트가 아닌 그저 나아게 이득이 된다고 접해보자! 필자도 처음에는 거부감이 있었지만, 공부를 해본다면 필자처럼 이야기가 달라질 수 있다. 그리고 어떻게 보면 좋은 기업들은 대부분 코딩테스트를 본다 물론 기업 바이 기업이지만 말이다