ETC/CodingTest

코딩테스트를 위한 공부 방법

페로페라 2022. 11. 5. 12:15
반응형

지금으로부터 약 1년 6개월 전.. 아래와 같은 글을 작성한 바 있다.

2021.05.26 - [코딩테스트(Coding Test)/Programming Basic] - 가장 기본적인 프로그래밍 독학 순서

 

가장 기본적인 프로그래밍 독학 순서

나는 컴퓨터공학을 전공한 사람으로 대학에서 C, JAVA, C++, Python, HTML/CSS을 배웠다. 전형적인 수동형 사람이었다. 뭔가 알아보고 스스로 해보기보단 대학 커리큘럼에 맞추어 공부하는 그저 그런 학

spero-spera.tistory.com

 

해당 글을 연재할 당시만해도 기본적인 프로그래밍 독학 순서는 정말 저렇다고 생각했고, 나 역시 해당 방식으로 공부했었다.

하지만 시간이 지나며 많은 자료를 읽어보고 나 역시 프로그래밍 공부를 다시 시작하며 해당 글을 정독해보니 코딩테스트를 준비하는 사람이라면 해당 방법이 꽤나 오래 걸리고, 불필요한 과정이 포함되어있는 것 같다는 생각이 들었다.

이제부터 내가 코딩테스트를 준비하기 위해 찾아본 방식에 따라 공부하면서 해당 내용들을 공유하고자 한다.

 

1. 나만의 주력 언어 찾기

내가 가장 자신있던 언어는 C였다. 하지만 코딩테스트를 준비하기엔 벅찬 언어라는 사실을 알게 되었다. C언어는 스택, 큐라는 기본적인 자료구조조차 하나하나 구현해야 하기 때문이다. Python, Java 등 일반적으로 코딩테스트를 준비하는 사람들이 주로 사용하는 언어들은 스택, 큐를 포함한 기본 자료구조를 구현할 필요없이 사용할 수 있다. 고로, 나는 다시 내가 주력 언어로 삼을 언어를 모색하기 시작했다.

가장 먼저, 손을 댔던 것은 Java였다.

1년도 채 되지 않는 한 번의 취업 경험을 바탕으로 생각했을 때 Java는 기본적인 소양같이 여겨졌다. 개발자라면 기본적으로 Java에 대한 이해가 필요하다고 느꼈다. 그래서 다음 취업을 위해서라도 Java를 공부해야겠다 마음먹었다.

그렇게 약 2주간 Java 문법을 공부하며 백준 문제를 풀다가 본격적인 자료구조 공부를 위해 사놓고 읽기를 미루던 책인 나동빈 저자의 '이것이 취업을 위한 코딩테스트다 with 파이썬'을 읽게 되었다.

그러면서 고민에 빠졌다. Java보다 Python을 많이 쓴다.. Python 코드가 무척 간결하다.. 해당 책에선 Python으로 설명되어 있어 Java로 응용하기에 시간이 더 걸린다.. 등등.. 많은 고민을 한 끝에 과감히 내 주력 언어를 Python으로 변경하게 됐다.

아무튼 이렇게 장단점을 두고 고민하여 자신의 주력 언어를 찾기를 권장한다.

 

2. 기본적인 문법 익히기

본인이 정한 주력 언어의 문법을 익히는 시간을 가져야 한다. 조바심이 나서 해당 단계를 대충 공부하고 건너뛰면 필자인 나처럼 문제를 풀다가 다시 이 단계로 돌아오고... 문제를 풀다가 다시 이 단계로 돌아오고... 문제를 풀다가... 이렇게 무한 루프에 빠지게 된다.

한번에 모든 문법을 제대로 익힐 수는 없지만 반드시 알아야 하는 기본적인 문법들은 잘 익혀두는 것을 추천한다.

기본서를 구매해도 되지만 요새는 구글링을 통해 좋은 기본서를 접할 수 있으니 취향에 따라 선택하여 공부하는 것을 추천한다.

(필자인 나는 '점프 투 파이썬', '혼자 공부하는 파이썬' 2가지의 기본서를 바탕으로 공부하고 있다.)

 

3. 코딩테스트 문제풀이 사이트에서 문제 풀기

내가 가장 먼저 추천하는 사이트는 백준과 프로그래머스이다. 언어에 상관없이 기초부터 문제를 풀어볼 수 있는 사이트이다.

가장 먼저 회원가입을 하고, '문제>단계별로 풀어보기'에서 재귀까지만이라도 풀어보자.

필자도 아직 재귀를 향해 문제를 풀어가는 과정 중에 있지만 한 문제 한 문제 풀어가면서 배우게 되는 것이 많다. 

 

그리고 백준에서 문제를 풀기 시작하면 solved.ac를 통해 자신의 레벨과 문제의 레벨을 확인할 수 있으니 로그인 후, 설정에서 solved.ac와 백준 계정을 연동할 것을 추천한다. (나는 코딩테스트 준비를 시작한 지 약 3주가 되어가는데 단계별로 풀어보기를 차근히 풀다보니 실버 5까지 2주도 채 걸리지 않았다.)

+ 백준에서 solved.ac 연동하는 방법은 아래 포스팅을 참고하길 바란다.

2022.11.25 - [알고리즘(Algorithm)/백준] - [백준] solved.ac 연동하는 방법

 

[백준] solved.ac 연동하는 방법

알고리즘 문제를 풀기에 가장 좋은 사이트 중에 한 곳이 백준이다. 백준은 solved.ac와 연동하여 문제의 레벨이나 나의 레벨을 수치화할 수 있고 기여나 히스토리 등을 확인할 수 있다는 장점이 있

spero-spera.tistory.com

+ 만약 본인이 C나 Python을 선택했다면 코드업에서 기본 100제도 한 번 풀어볼 것을 권장한다. 나는 해당 사이트를 몰랐으나 '이것이 취업을 위한 코딩테스트다 with 파이썬'를 통해 알게 되었다. 아주 기초적인 것부터 차근히 공부해나갈 수 있는 사이트이다.

+ 추가로 찾아보다보면 코딩테스트를 보는 기업의 문제 난이도가 대부분 solved.ac 기준으로 실버~골드 사이라고 하니 골드가 될 때까지 열심히 공부하는 것이 좋을 것 같다.

+ 번외로 나는 백준, SWEA, 코드업 기초 100제 이렇게 3가지 사이트에서 문제를 풀고 있다.

 

4. 자료구조와 알고리즘 공부하기

백준을 기준으로 재귀까지 풀고나면 이제 자료구조와 알고리즘을 알아야 하는구나! 라고 느끼는 순간이 찾아온다.

나 역시도 '이제는 기본적인 문법을 아는 것만으로는 더 이상 문제를 풀 수 없구나..'라는 생각이 들기 시작했다.

그럼 이제 이때부터 자료구조와 알고리즘을 공부하면 된다.

자료구조는 배열, 연결리스트, 스택, 큐, 트리, 힙 등이 있고, 알고리즘 종류로는 탐색, 정렬, 완전 탐색 등이 있다.

좋은 책을 추천할 만큼 내가 많은 책을 알고 있지 않아 섣불리 추천할 수는 없으나 내가 보고 있는 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책이나 흔히 종만북이라고 불리는 '프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략', '파이썬 알고리즘 인터뷰' 책이 코딩테스트를 준비하는 분들에게 유명한 것 같다. (나는 책 욕심이 많아 3권 다 가지고 있다..ㅎㅎ 가지고 있는 것에 그치지 않고 n회독 하는 것이 목표이다.)

 

5. 공부한 것을 증명해두기

이 단계는 까먹지 않고 실현하기를 정말정말 추천한다. 흔히 말하는 1일 1커밋이다.

나는 GitHub를 통해 증명하고 소스파일들을 보관하고 있는데, commit 내역을 볼 수 있어 자극이 된다. 하루에 한칸 한칸 repository에 push하면 아래의 네모 블록이 초록색으로 채워지는 것이 보여 재미도 있고, 이 재미 덕분에 너무 피곤해도 하루에 한 문제 이상 풀어 증명해두고 있다. (쉬운 문제 달랑 1개 풀고 commit하기 보다는 적어도 하루에 3시간의 여유를 두고 발전할 수 있는 문제를 풀 것을 추천한다.) 아래는 내 깃허브의 잔디이다. 시작한지 한 달도 채 되지 않아 아직 귀여운 정도이지만 차곡차곡 심을 예정이다.

꽤 오래 쉬고 있던 이 블로그를 내 개발 공부를 위해 다시 시작한 것도 비슷한 이유이다. 내가 매일 공부한 것들을 정리하면서 복습도 하고, 공유할 목적이다.

 

728x90
반응형