서론
지금도 아주아주 미천한 실력이지만 그래도 과거에 아예 방향을 못잡고 허우적대던 때가 있었어서, 준비했던 경험을 바탕으로 게임회사 혹은 게임업계 코딩테스트 준비 방법에 대해서 알려드리려고 합니다.
아예 코딩테스트 대비 방향에 대해서 감을 못잡겠다 싶으신 분들, 이제 처음 시작하려는 분들을 대상으로 작성했습니다.
따라서 문제를 한 30개 이상 풀어보신 분들에겐 도움이 될 수도, 안 될 수도 있습니다...
또, 제목에 게임회사라고 특정짓긴 했지만 코딩테스트를 보는 다른 회사들에도 적용할 수 있을 것이라고 생각합니다.
동기 부여
코딩테스트 준비는 많이, 빨리 보다는 적더라도 꾸준하게 했을 때 더 많이 성장할 수 있다고 생각합니다.
이때문에 저처럼 게으른 사람에게는 어느정도 동기가 필요했습니다.
예를 들면 2D 턴제게임을 만들어보면서 길찾기 알고리즘을 찾아보았고, 그것을 공부하면서 알고리즘 지식에 대한 필요성을 느꼈습니다. 테트리스나 스네이크를 만들어보면서 자료구조 지식의 중요함을 느꼈습니다.
동기는 무엇이든지 상관없습니다. 깃허브 또는 Solved.ac 잔디심기, 학교 랭킹 상위권 가보기 등등...
물론 뚜렷한 동기가 없어도 상관 없습니다.
어느 날 그저 알고리즘 문제를 한 문제씩 풀어야겠다해서 시작해도 됩니다.
꾸준히 할 수만 있으면 이미 반은 성공한 것 입니다.
또, 하다가 언어 지식이나 자료구조 지식의 부족함을 느낄 수도 있습니다.
그건 그거대로 '아 이게 이래서 필요한거구나' , '공부 해야 되는거구나' 하고 몸소 깨닫게 된 것이니 너무 좌절하지 않아도 됩니다.
저는 이것때문에 몇 번 의지가 꺾인 적이 있었는데요, 천천히 공부하면 되니까 괜찮습니다.
다시 한 번 적지만, 꾸준히가 중요합니다.
저도 공부하면 게임 개발에 도움이 된다고 머리로는 이해해도 풀기 싫어할 때가 많았기 때문에... 참 어렵습니다.
때로는 랭킹, 때로는 티어, 때로는 게임 개발... 무슨 동기든 좋습니다.
일단 하는게 중요합니다.
언어 선택
회사마다 코딩테스트에서 지원하는 언어가 다릅니다. 보통 C++, 파이썬, 자바를 지원합니다.
게임회사 코딩테스트는 가끔 가다 파이썬이나 자바를 지원하지 않는 경우가 있어서 웬만하면 C++를 추천합니다.
제 생각이긴 하지만 C++에 익숙하지 않다면 공부를 해서라도 코딩테스트 주력언어로 사용하는게 나을 듯 합니다.
어차피 C++은 언리얼 혹은 다이렉트X를 접하면서 언젠가 사용하게 되기 때문입니다.
또, 파이썬이나 자바 등의 주력 언어를 지원 안해줘서 제 실력을 발휘 못한다면 큰일이니까요...
방법
코딩테스트 문제를 몇 개 풀어볼 수 있는 사이트가 있습니다.
- 백준 온라인 저지
- 프로그래머스
- 삼성 SW Expert Academy
- 여타 해외 사이트 등
- ...
- Solved.ac (직접 문제가 제공되는 곳은 아니고, 백준과 연계되는 문제 추천 서비스입니다.)
저는 백준과 프로그래머스, Solved.ac만 이용했습니다.
공부 방법을 수치로 나타내 요약하자면 다음과 같습니다.
- 백준 단계별로 풀어보기 28 정도까지
- 프로그래머스 레벨 2~3 정도까지
- solved.ac 클래스 4정도까지
숫자가 낮은것부터 올라가면서 풀어보시면 됩니다.
예를 들면 단계별로 풀어보기 1부터, 레벨 1부터, 클래스 1부터입니다.
웬만하면 다 풀긴 좋긴 하지만, 특정 단계나 클래스의 모든 문제를 풀어볼 필요는 없습니다.
그 이유는 제가 위에 '정도까지'라고 표현한 이유와 같습니다.
'정도까지'라고 쓴 이유는 각 사이트에서 레벨과 클래스로 구분되어있긴 해도, 같은 단계 내에서 문제 난이도는 차이 날 수 있기 때문입니다.
프로그래머스 레벨 3 문제를 몇 개는 풀었는데, 몇 개는 못풀겠고 심지어 레벨 2도 안풀리는 문제가 있을겁니다.
백준도 본인이 골드여도 실버문제를 못 풀수도 있고 그렇습니다.
예를 들면 롤 다이아라고 롤 플래티넘이신 분들과 붙어서 승률 100%가 아닌 것 처럼요.
그래도 최대한 많이 풀어보려하고 승률을 높이는 게 좋습니다.
더 자세한 방법
하다보면 모르는게 계속 나오거나 푸는데에 너무 오래 걸려서 좌절할 수 있습니다.
게다가 어떤 알고리즘 문제는 그냥 그 방법을 떠올리지 못하면 거의 풀기가 불가능에 가깝게 느껴지는게 있어서 더 그렇습니다.
solved.ac 서비스를 만드신 박수현님께서 발표하신 자료가 있는데 참고하시면 좋습니다.
지금 보니 거의 필요한 정보가 여기 다 들어가 있어서, 이걸 글 위에 첨부했어야 했나 싶은데... 이미 써내려왔으니 이왕 이렇게 된거 여기에 놔두겠습니다...
또한, 알고리즘에 대한 강의 자료도 많이 있으니 참고하시면 좋습니다.
두 분의 블로그 강좌를 쭉 따라가면서 추천 문제를 풀고 위의 코딩테스트 공부 방법을 어느정도 적용시킨다면, 자신이 어떤 문제에 약한지나 어떤 부분을 추가로 공부해야 할지 어느정도 길이 보이실 겁니다.
저는 개인적으로 혼자 백준 단계별로 풀어보기 할 때 보다 위의 발표 자료와 블로그 강좌를 읽으며 공부했을 때 많은 도움이 되었습니다.
이제 방법을 알았으니, 꾸준히 연습하는 것만 남았습니다!
계속 응시하기
또 중요 한것은 최대한 많은 코딩테스트를 봐보는 것 입니다.
게임회사뿐 만 아니라 다른 IT회사들도 많이 지원해서 코딩테스트를 응시해보는 것을 추천합니다.
저는 많이 못 풀까봐 위축되어 몇 군데는 지원조차도 하지 않았었는데, 지금 와서 생각하니 조금 아쉽습니다.
사실 실전에서 1, 2문제 이상 푸는 게 어려울 수도 있습니다... 가 아니라 그냥 어렵습니다.
그래도 모의고사 보는 것 처럼 보면 어떤 유형이 많이 나오는지 알 수 있고 실전 연습도 많이 된다고 생각합니다.
하다보면 '내가 이런 부분이 약하구나, 무엇을 공부해야겠다' 싶은, 방향을 스스로 정할 수 있는 때가 올 것입니다.
마무리
꾸준히 풀면서 코딩테스트 응시를 하다보면 언젠가 문제가 하나 둘씩 풀릴겁니다.
그때까지 화이팅입니다!!
저도 요즘 다른거 한다고 못했는데, 마음 한 켠에는 다시 한 문제씩 꾸준히 해봐야지 하는 생각은 있습니다...
하던 공부 마무리되면 다시 시작해야죠...