코딩테스트를 준비하는 분들이라면 빠르게 성장하는 방법을 매우 궁금해하실거라 생각합니다. 여러분이 코딩테스트를 준비하며 실천할 수 있는 몇 가지 방법을 제시드립니다.
주력 언어 만들기
코딩테스트를 보기 위해 자신만의 주력 언어를 꼭 하나 선정해야 합니다. 최근 수 많은 언어가 등장했지만, 실기 코딩테스트에서 사용되는 언어는 한정적이므로 이에 초점을 맞추어 설명하겠습니다.
대부분의 실기 코딩테스트 환경에서는 C++, Java를 허용하는 경우가 많습니다. 최근에는 Python을 허용하는 경우가 늘고 있지만 익숙하지 않은 환경에서 사용하기에는 사람에 따라 디버깅 등이 힘들어질 수 있습니다. 모 대기업 시험에서는 최종 단계 시험에서는 C++만을 허용하는 경우도 있으므로 참고하시기 바랍니다.
Java의 경우는 대부분의 시험에서 허용하지만 불필요한 Class 구조로 인해 코드 작성시 군더더기가 발생하는 단점이 있습니다. 그러니 static이나 class를 잘 이해하고 있는 분에 한해 추천드립니다. 입출력 및 문자열 접합을 빠르게 처리하기 위해서는 별도의 노력이 필요하다는 점을 꼭 숙지해야 합니다. HashSet이나 HashMap의 남용도 주의해야 하구요.
C++은 기본 복사 연산자가 Deep Copy라는 것을 명심하고 구현해야 합니다. 특히 배열이나 문자열은 파라미터로 넘길 때 주의하세요!
Python은 Indent Error가 나지 않게 꼭 확인하고 또 통일해야 합니다. 기본 최대 재귀깊이 설정이 작게 되어있다는 점을 유의하세요.
이 외에도 각 언어마다 주의점과 장단점이 있으므로 잘 숙지하고 있어야 합니다.
시험 문제/환경 적응하기
가장 좋은 방법은 최대한 많은 시험을 보며 익숙해지는 것이지만, 현실적으로 그러기 쉽지 않죠. 온라인에서 열리는 콘테스트에 참가하거나 자신만의 가상 대회를 개최하여 시간 제한을 두고 연습하는 것을 추천드립니다. 구름LEVEL이나 구름EDU의 코딩테스트 모의고사를 통해 실제 시험환경에서 코딩테스트를 대비할 수 있습니다. 코딩테스트 모의고사에서는 가상의 합격 기준선과 해설도 제공하고 있으니 참고해주시기 바랍니다.
알고리즘 지식 및 구현 능력 기르기
일반 전공서적으을 통한 알고리즘 공부는 코딩테스트 준비에 있어서 한계를 보입니다. 코딩테스트에서는 알고리즘을 아는 것보다도 적재적소에 적용할 수 있고 실제로 구현할 수 있는 능력을 평가하기 때문입니다. 그렇기 때문에 각각의 알고리즘을 구현할 수 있을 수준으로 훈련되어 있어야 하며, 각 문제에 필요한 알고리즘을 찾아내 적용할 수 있는 감각과 안목이 필요합니다. 이런 감각은 책이나 강의로 배울 수 없습니다. 많은 문제를 풀어보고 다양한 방법을 시도/경험하며 깨우치는 것이 정도입니다.
기초적인 구현부터 시작해서 속도를 붙이며 많은 문제를 "직접 구현하면서 풀어보는" 과정이 꼭 필요합니다. 기초적인 구현 능력이 완성되면 개별적인 알고리즘 구현이 훨씬 용이해지며, 처음 보는 문제에도 다양한 시도를 해볼 수 있게 됩니다. 기초부터 차근차근 공부해보세요. 바로 고급 알고리즘에 맛을 들이는 건 언젠가 구현과 적용 단계에서 여러분의 발목을 잡게 될 겁니다. 요즘에는 많은 온라인 저지들이 공개되어 있으므로 적극 활용해 보세요.
또한, 기존의 책들은 이론적이거나 대회를 준비하는 상급자용이라 코딩테스트 대비하기가 쉽지 않을 수 있습니다. 온라인 저지에도 너무 많은 문제가 있는데 반해 커리큘럼이 부족하여 공부가 어려운 경우가 많습니다. 이럴 땐 알고리즘 문제해결기법 입문 강좌 또는 비타알고 시즌1, 비타알고 시즌2를 고려해보세요! 기초적인 구현부터 Step-By-Step으로 진행되며 정말 많은 문제를 계속 풀이할 수 있습니다.