1. 언어 선택하기
가장 편한 언어, 직군 관련 언어, 서브 언어로 나눠서 나에게 어떤게 더 맞는지 하나씩 따져보기
ex)
1. 가장 편한 언어? : kotlin, python
2. 직군 관련 언어? : kotlin
3. 서브 언어? : python (문법은 알지만 안한지 오래됨), c++ (거의 제로베이스)
결론 : 주력 언어 - kotlin, 서브 언어 - python
서브 언어는 문법 정도만 알아도 상관 없음
주 언어로 푼 문제를 똑같이 서브 언어로 풀 수 있을 정도만? 준비하기
1.1 C++
장점 :
- 다양한 STL (Standard Template Library)를 제공한다.
- 거의 모든 코딩테스트에서 사용 가능하다.
단점 :
- Python에 비해 문자열 처리가 어려움
- 입문하기가 어렵다
LG CNS : C++ 사용 불가
SK 하이닉스 : C, C++만 사용 가능
1.2 Python
장점 :
- 입문이 쉽다.
- 라이브러리가 굉장히 강력하다.
- 문자열 처리에 이점이 강하다.
- 거의 모든 코딩테스트에서 사용 가능하다.
단점 :
- 느리다는 문제점이 있다
코딩테스트에서 언어 별로 주어지는 시간이 다를 뿐더러, 효율성 문제는 언어 자체의 문제보다는 내가 짠 알고리즘의 시간 복잡도 문제가 더 크다!
1.3 Java
장점 :
- 웹 / 앱 직무의 주력 언어
- 거의 모든 코딩테스트에서 사용 가능
단점 :
- 입 출력이 번거롭다.
- 명령어가 길다. (IDE를 사용하지 못하는 코테에서는 계속 쳐야함)
2. IDE (개발 환경) 설치하기
언어 | IDE |
C, C++ | VSCode |
Python | Pycharm, VSCode |
Java | Eclipse, IntelliJ |
Kotlin | IntelliJ |
3. 코딩 테스트 연습 플랫폼 추천
- Leetcode : 인턴, 상시, 경력에서 많이 사용 - ex. 11번가
- Codility : 인턴, 상시, 경력에서 많이 사용 - ex. 쿠팡
- Goorm : NHN, 미래에셋 - 입력값을 어떻게 받는지 알아보고 들어가야함!
- Hackerrank : 인턴, 상시, 경력에서 많이 사용 - ex. 네이버
- Programmers : 대부분 기업에서 사용
- BOJ : 시험 진행은 따로 하지 않음
- SW Expert Academy : 삼성 시험 환경과 같음
3.1 BOJ (백준 온라인 저지)
티어 기준 골드 1까지만 잘 풀어도 합격 가능하다고 함
- 문제 수가 많다!
- 유형 별 문제집이 있다!
- 삼성 기출 문제집 + 삼성 A형 기출 문제집
- 풀이가 다양하게 있음
3.2 Programmers
- 가장 많은 시험을 진행 - 시험 환경 적응에 좋음
- 코딩테스트 고득점 키트 - 주요 알고리즘 문제집 (난이도 별 분류가 되어있음)
- 카카오 기출 문제집!
- SQL 문제집! - 금융권 IT 직군 코딩테스트 대비
- 오토에버, 라인, 카카오, 쿠팡, 네이버, LG CNS, SK 하이닉스 등등
Programmers로 알고리즘에 익숙해지고 어려웠던 유형을 BOJ에서 많이 풀어보는 방향이 좋다!
IDE에 너무 의존하지 말고 온라인 플랫폼에서 직접 해보는게 필요함
4. 팁
- IDE 없이 온라인 플랫폼에서 푸는 연습 많이 하기 (자동완성 기능 없이 하는 습관 들이기)
- 문제 풀기 전에 손부터 나가지 말고 접근 방법부터 생각
- 바로 코드를 쓰는 것 보다 어떤 코드를 내가 구현할 지 주석으로 적어놓고 하는 것이 좋을듯
- 반년 정도 투자한다는 생각으로 (하루에 두 세 문제씩)
- 시간 복잡도 고려하기
- 최악의 입력에 대해 내가 짠 알고리즘이 시간초과가 생기지 않는지 코딩하기 전 부터 고려하기
- 엣지케이스 고려하기
- 디버깅 하기 : 프린트 문 찍어보기
- 알고리즘 분류가 아예 안될 때는 풀이를 참고, 방향을 알 때는 그냥 풀어보기
- Main 안에 다 풀지 말고 함수별로 나눠서 풀기
Reference
https://www.youtube.com/watch?v=uGAssHEHCNI