본문 바로가기
프로그래밍/코딩테스트

코딩 테스트, 어떻게 대비해야 할까?

by 민벗 2022. 11. 8.
반응형

 

 개발 관련 분야로 취업을 하려면 서류통과 이후 코딩 테스트가 필수입니다. 대기업은 물론이고 대다수의 스타트업도 취업문턱에 코딩 테스트가 준비되어 있습니다. 이처럼 개발 분야에 취업하려면 코딩 연습을 해야 하는 게 필수로 자리 잡았습니다.

 

 왜 기업은 채용과정에 있어 코딩 테스트를 선호할까요? 그 이유는 개발에 적합한 인재를 뽑는 가장 쉬운 방법이기 때문입니다. 코딩 문제를 풀려면 기초적인 프로그래밍 언어 지식이 필요하며, 이는 채용할 부분에서 필수적인 기술입니다. 또한 맞춘 문제 수로 통과자를 뽑기 때문에 들어가는 인사 비용이 매우 적습니다.

 

 이 글에서는 초심자가 처음부터 어떻게 코딩 테스트를 준비해야 할지, 그리고 단지 취업을 위해서가 아닌 개발 지식을 쌓는 공부방법을 소개드리고자 합니다.

 


 

코딩 테스트 전략

 먼저 코딩 테스트를 대비하기 위해서는 세 가지 과정이 필요합니다. 간단히 요약하면 다음과 같습니다.

 

  • 프로그래밍 언어
  • 자료구조
  • 코딩 테스트 연습

 

 여기서 알고리즘을 넣을까 생각을 해봤지만 자료구조로 어느 정도 커버가 되고, 알고리즘을 따로 공부하기보다는 코딩 테스트 연습을 하면서 함께 공부하는 게 더 효율이 좋다고 느꼈습니다.

 

 

프로그래밍 언어 공부

 먼저 코딩 테스트를 준비하기에 앞서, 자신에게 맞는 프로그래밍 언어를 선택해야 합니다. 제 기준 선택지는 JavaScript, Python이 존재합니다. C++라는 선택지도 존재하지만, 한국 내 특성상 이 언어를 사용하는 기업은 매우 적습니다. Java의 경우 여전히 백엔드 언어로 대세를 차지하지만, 코딩 테스트에 있어서 사용하기 어려운 언어기에 제외되었습니다.

 

 만약 웹 개발자를 생각하고 계신다면, 주저 없이 JavaScript를 배울 것을 추천합니다. 과거에는 JavaScript로 코딩 테스트를 하는 경우가 거의 없었지만, NodeJS라는 실행환경이 만들어지면서 대세언어로 자리잡았습니다. 또한 프론트엔드 개발의 경우 JavaScript를 대체할 언어가 존재하지 않기 때문에 장기적으로도 사용할 수 있는 언어입니다. 코딩 공부를 하면서 JavaScript를 공부하신다면 자연스럽게 웹 지식도 얻게 될것입니다. 코딩테스트후 기술면접도 준비되어 있는데, 그에대한 공부를 어느정도 할 수 있는 셈이죠.

 

 자바스크립트의 경우 코딩테스트 대비 교재가 존재하지 않습니다. 그러나 괜찮습니다. 코딩 테스트는 기초적인 언어 지식과 꾸준한 연습만 필요할 뿐입니다. 저는 이 언어를 모던 자바스크립트라는 페이지에서 공부하실 것을 추천드립니다. 코테 준비를 위해서 자바스크립트의 기본만 봐도 충분하며, 이 외 심화지식은 코딩 연습과 병행하시면 됩니다. 2020년에 JavaScript로 코테를 준비했는데, 불이익을 본 적이 없습니다. (웹 개발회사인데 자바스크립트로 코딩 테스트를 못 본다면, 좋은 기업이 아닐 확률이 높습니다.)

 

 

모던 JavaScript 튜토리얼

 

ko.javascript.info

 

 다음으로 아직 분야를 안정하셨거나 인공지능 관련 직무로 가길 희망하신다면, 주저 없이 python을 선택하시면 됩니다. 또한 iOS 개발자일 경우 Swift를 사용하게 될 텐데, 스위프트는 코딩 테스트에서 자주 사용하지 않으므로 파이썬으로 준비하시는 게 좋습니다. Swift의 개발자인 크리스 래트너는 Rust, Haskell, C#, Python, Ruby를 참고하여 이 언어를 개발했다고 밝혔기 때문이죠.

 

 파이썬의 경우 가장 큰 장점은 바로 배우기 쉽다는 점입니다. 이에 따라 빠른 개발 속도를 가지며, 코딩 테스트를 볼 때도 이 장점이 그대로 드러납니다. 과거에는 파이썬의 느린 속도 때문에 점유율이 낮았지만, 현재 하드웨어 성능이 높아져 이 단점이 해결되어 2022년 기준 사용자수 1위를 기록하였습니다.

 

 파이썬은 코딩 테스트를 위한 교재가 따로 존재합니다. 이러한 교재로 공부하는 것도 좋지만, 웹 상에서 파이썬에 대한 기초지식을 배우는 것을 추천합니다. 점프 투 파이썬이 대표적인 예시며, 위키 독스를 둘러보시면 좋은 내용의 교재가 많습니다.

 

점프 투 파이썬

** 점프 투 파이썬 오프라인 책(개정판) 출간 !! (2019.06) ** * [책 구입 안내](https://wikidocs.net/4321) 이 책은 파이썬이란 …

wikidocs.net

 

 

자료구조, 교재를 살 필요 없이 토막 지식으로

 시중에 파는 자료구조 책을 보시면, 대부분 같은 내용으로 이루어져 있는 걸 알 수 있습니다. 지금 당장 웹 서점에서 자료구조 책들의 목차만 보셔도 눈치채실 겁니다. 그만큼 자료구조에서 공부할 내용이 한정적인 걸 알 수 있습니다.

 

 따라서 자료구조 책의 목차만 보시고, 공통된 내용을 직접 찾아보시는 게 좋습니다. 자료구조 책은 대부분 C언어로 되어있어서, 처음 하시는 분께는 책으로 공부하시는 걸 추천드리지 않습니다. 기본적인 개념을 이해하시고, 자신에게 맞는 프로그래밍 언어로 구현된 것을 찾아보시면 됩니다. 대표적으로 나오는 자료구조는 다음과 같습니다.

 

    • 배열 / 연결 리스트
    • 스택 / 큐
    • 정렬
    • 트리
    • 우선순위 큐
    • 해시
    • 포인터 + 얕은 복사와 깊은 복사(Call By Value & Call By Reference)

 

 해시까지는 이해가 되시겠지만, 포인터의 개념은 C언어만 존재합니다. 하지만 포인터의 기본원리인 메모리 주소 값은 모든 언어에서 사용하고 있습니다. 대표적으로 얕은 복사와 깊은 복사가 존재하지요. 포인터의 관한 내용은 처음에 이해하기 어려울 것입니다. 그러나 여러 번 보게 되신다면 충분히 이해하실 수 있고, 실무에서 개발을 할 때 많이 이용하시게 됩니다.

 

 

코딩 테스트 사이트, 어디서 준비해야 할까?

Baekjoon Online Judge (백준)

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 백준 사이트의 경우 들어본 분은 많을 것입니다. 그만큼 국내에 있어서 가장 유명한 코딩 연습 사이트입니다. 가입자 수와 문제수만큼 가장 많은 곳이죠.

 

 하지만 저는 백준에서 코딩 연습을 하시는 걸 권장하지 않습니다. 이유는 두 가지인데 입출력 방식과 문제 해설의 부족함 때문입니다.

 

 먼저 백준의 문제를 보면 모두 input과 print문을 사용해야 합니다. 하지만 개발할 때 print문은 몰라도 input은 전혀 사용하지 않습니다. 또한 print문조차 개발 기술이 올라갈수록 디버깅 모드로 대체되어 사용하지 않게 됩니다. 게다가 JavaScript의 경우 백준에서 인풋 문을 사용하려면 복잡한 과정을 거쳐야 합니다. 그렇기에 백준에서 자바스크립트를 사용하기 쉽지 않죠.

 

 다음으로 문제 해설의 부족함인데, 백준의 경우 다른 사람의 코드를 볼 수 있지만 그에 대한 지식은 직접 습득해야 되죠. 예를 들어 '투포인트'라는 기술이 있는데, 이 개념을 처음 듣는다면 문제와 코드를 보고 이것을 알 수 없습니다. 즉 이 코드에서 배울 내용을 스스로 도출해야 하는데, 초심자에게는 매우 어려운 과정일 겁니다.

 

반응형

Programmers (프로그래머스)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 많은 기업에서 프로그래머스로 코딩 테스트를 보는 만큼 이 UI에 익숙해지면 좋습니다. 또한 문제의 질도 높고, 무엇보다 input, print 형식이 아닌 함수형으로 입출력을 담당합니다. 개발과 비슷한 형식의 코딩연습이라고 생각하시면 되겠네요.

 

 만약 코딩이 처음이고 아직 영어에 익숙하지 않다면 코딩테스트 입문부터 시작하실 것을 추천합니다. 풀기 쉬운 문제로 구성되어 있으며, 100문제로 양이 많지만 마음만 먹으면 일주일 만에 다할 정도입니다. 이후 고득점 kit을 풀면서 해당하는 알고리즘(해시, 스택/큐, 힙, 정렬, DFS/BFS)을 공부하시면 됩니다.

 

프로그래머스의 코딩테스트 화면

 

 이 사이트에서만 공부해도 충분히 코딩 테스트에 도전할 실력이 나오게 됩니다. 하지만 국내에 한정된 만큼 다른 사람들의 풀이가 다양하지는 않습니다. 또한 최신 문법이 적용되지 않은 경우가 많아서 저는 잘 이용하지 않습니다. 대표적으로 Python의 타입 설정과 Typescript의 미지원 등이 있습니다. 이 부분은 입문자가 생각할 단계는 아니지만, 조금 욕심이 난다면 아래의 사이트를 이용하시는 걸 추천합니다.

 

 

Leetcode (릿코드)

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 제가 주로 이용하는 Leetcode입니다. 영어라서 어려우실 수도 있지만, 구글 번역이 잘되고 무엇보다 개발을 하면 영어로 된 문서를 많이 접하게 됩니다. 그래서 코딩 테스트를 대비하는 김에 영어공부도 같이할 수 있게 됩니다. 어려운 영어는 많이 없고, 딱 개발에 필요한 단어가 많이 나와서 공부하기도 수월합니다.

 

 제가 느낀 릿코드의 장점은 일일 문제와 다양한 풀이법입니다. 먼저 일일 문제의 경우 매일 다른 문제가 주어집니다. 매번 어떤 문제를 고민할 필요 없이 해당 문제를 풀면 되죠. 매일 한 문제씩 주어지며 난이도는 랜덤 하게 나옵니다.

일일 문제

 

 다음으로는 다양한 풀이 방법의 존재입니다. 릿코드의 경우 문제마다 공식 풀이 방법을 제공합니다. 타인의 코드를 볼 수도 있지만, 정확한 풀이방법을 제공하는 사이트는 몇 없습니다. 각 문제풀이에서는 시간복잡도와 공간복잡도도 함께 제공하며, 어떤 방식이 더 효율적인지 쉽게 살펴볼 수 있습니다. 몇몇 문제는 유료로 구독해야 풀이를 볼 수 있지만, 무료로 볼수 있는 문제가 충분히 많으므로 문제될 사안은 아닙니다. 대표적으로 이런 예시가 있습니다.

 

 하지만 릿코드의 쉬운 문제는 처음 코딩을 접한 사람이 풀기엔 어렵다고 느껴집니다. 따라서 어느 정도 프로그래머스에 적응이 되시면 릿코드에 들어와 이어서 연습을 하실 것을 추천합니다. 일일 문제를 푸셔도 좋고, 릿코드가 제공하는 스터디 플랜을 따라가셔도 괜찮습니다.

 

 또한 JavaScript로 코딩 연습을 하실 분이라면, TypeScript에 도전해봐도 좋습니다. JavaScript에 타입 선언을 추가할 뿐이지만, 대부분의 기업은 타입 스크립트를 사용합니다. 협업에 있어서 타입을 표시하니, 코드 해석이 수월하다는 큰 장점이 있기 때문이죠.

 

 취업을 하셨거나 코딩 테스트 공부를 마치셨다면, 코드에 나온 타인의 코드를 보는 게 좋습니다. 해외인 만큼 국내에 없는 지식이 많아 성장하는 느낌이 들기 때문이죠.

 


 

 이렇게 제가 코딩 테스트를 준비한 과정을 소개드렸습니다. 모든 분께 똑같이 적용되지는 않겠지만, 필요한 부분만 여러분께 직접 적용해서 좋은 성과를 내셨으면 합니다. 긴 글 읽어주셔서 감사합니다.

반응형

댓글