앞서서…
2024년 10월
에 작성된 글이기 때문에 시간에 따라 트랜드가 변할 수 있습니다. 여러 기업 코테에 합격도 하고, 삼성 B형 취득도 해서 제가 공부한 방법이 나름대로 효과가 있었다고 생각합니다. 그래서 취뽀한 지금 나만의 코테 준비 전략을 기록해 보려 합니다.
언어 선택
아마 코딩 테스트를 준비하는 분들에게 언어 선택은 큰 고민거리일 것입니다. 저는 Python
-> C++
-> Java
순으로 언어를 바꿨기에 언어 선택에 대한 고민을 많이 했습니다. 그래서 제가 Java
를 선택한 이유를 적어보려 합니다.
제일 큰 이유는 최근 백엔드 공채 코테 언어가 Java
로 제한되는 경우가 많아졌기 때문입니다. Coupang
, 현대 오토에버
등 에서는 Java
로만 응시할 수 있었고 다른 기업에서도 C++
와 Java
로만 응시할 수 있는 경우가 많았습니다. 그래서 언어에 대한 고민을 줄이기 위해 Java
를 선택했습니다. 반대로 말하면 Python
은 코테에서 매력도가 조금 떨어지고 있다고 볼 수 있습니다. (그래도 많은 기업에서 Python
을 허용하고 있습니다.)
위에서는 조금 일반화해서 말했지만, 본인이 지원하는 기업이 어떤 언어를 주로 사용하는지 확인하고 그 언어를 선택하는 것이 좋을 것 같습니다. 즉 Django
를 사용하는 기업이라면 Python
을 선택하는 것이 좋고, Spring
을 사용하는 기업이라면 Java
를 선택하는 게 조금이라도 호감도를 높일 수 있다고 판단했습니다. 또한 코테 언어로 판단하는 경우는 많이 없다고 알려졌지만, 제 프로젝트가 Spring
인데 Python
을 선택하면 Java
에 대한 이해도가 떨어진다고 볼 수도 있기 때문에 최대한 안전하게 프로젝트에 사용한 언어를 선택했습니다.
두 번째 이유로는 언어별 코테 유불리가 크지 않다고 생각하기 때문입니다. Python
은 문법이 간결하고 C++
은 빠르다는 장점이 있습니다. 하지만 코테에서는 특정 언어가 쉽게 풀리거나 아니면 속도가 유리한 문제가 나오지 않기 때문입니다. 왜냐하면 출제자가 의도한 자료구조
와 알고리즘
을 사용하면 어떤 언어를 사용하더라도 풀 수 있게 만들어져 있기 때문입니다.
마지막으로 이미 알고리즘
과 자료구조
에 대해서 이해가 있다면 언어를 바꾸는 것은 큰 문제가 되지 않습니다. 저 같은 경우에도 C++
에서 Java
로 바꾸고 2주 만에 현재 다니는 기업 코테를 통과했습니다. 그래서 언어를 바꾸는 것에 대한 고민이 있다면 큰 부담을 느끼지 않으셔도 됩니다.
알고리즘
알고리즘은 본인이 선호하는 기업에 맞게 준비하는 게 좋습니다. 기본 알고리즘을 베이스로 해서 삼성
의 경우에는 시뮬레이션, 카카오
의 경우에는 문자열과 세그먼트트리 등을 기출을 분석해서 준비하는 것이 좋습니다. 이 분야는 공부법도 여러 가지가 있기 때문에 본인에게 맞는 방법을 찾아서 공부하는 것이 좋습니다.
저 같은 경우에는 특정 기업을 타깃으로 하지는 않았습니다. 넓은 기업을 포괄할 수 있도록 학습했고, 어려운 문제를 풀기보다는 실수를 하지 않는 것을 중점으로 공부했습니다. 그래서 골드 상위권 문제는 거의 풀지 않았고, 실버 ~ 골드 하위권 문제를 중점으로 풀었습니다.
자료구조
알고리즘만큼이나 자료구조도 중요하다고 생각합니다. 스택
, 큐
, 힙
, 트리
, 그래프
등을 잘 이해하고 있어야 효율적인 알고리즘을 작성할 수 있습니다. 직접 구현해 보면서 이해하는 정도는 아니더라도, 최소한 본인이 사용하는 언어에서 제공하는 라이브러리가 어떤 방식으로 동작하는지는 알고 있어야 합니다. 예를 들면 Java
의 ArrayList
가 언제 배열을 늘리는지 같은 걸 알고 있어야 효율적인 코드를 작성할 수 있습니다.
시간 관리
풀이를 알고 있더라도 제한 시간 내에 풀지 못한다면 의미가 없습니다. 그래서 시간 관리가 중요합니다. 저 같은 경우에는 알고리즘을 떠올리는 시간
은 줄일 수 없다고 생각해서 코딩 시간
을 줄이는 방법을 찾으려고 노력했습니다. 그래서 자주 사용하는 알고리즘(백트래킹, 이분탐색 등)은 템플릿
을 만들어두고 매번 동일하게 작성하도록 했습니다. 그 결과 실수와 코딩 시간을 줄일 수 있었습니다.
후기
solved를 보면 알 수 있듯 제가 남들만큼 꾸준히 문제를 푼 것은 아닙니다. 하지만 그럼에도 불구하고 코테를 통과할 수 있었던 이유는 의식적
으로 공부했기 때문이라고 생각합니다. 코테를 왜 해야 하고 어떤 것을 보여주려고 하는지를 명확하게 정리하고 공부하면 효율적으로 공부할 수 있다고 생각합니다.
이 글을 보는 여러분도 본인이 왜 코테를 준비하는지, 어떤 기업을 타깃으로 하는지 생각해 보면 좋을 것 같습니다. 행운을 빕니다.