본문 바로가기
코딩테스트/가이드 & 마음가짐

코딩테스트에 대한 정리

by 학습하는 청년 2023. 8. 8.

최종 수정 : 24.12.25

코딩테스트에 대한 정리

결론 : 많이 풀다보면, 손이 자연스럽게 코딩하게 된다.

 

공부 방법

method 1. 문제를 풀 때, 제한시간을 둔다.

  • 취업을 준비하는 입장에서는 가장 귀한 자원은 시간이다.
  • 그렇기 때문에 적정한 시간(30~60분)을 정해놓고, 문제에 대해 고민하는 것이 좋다.
  • 시간을 초과하면, 과감히 정답을 찾아보고 코드를 숙지하라

"남의 코드를 보고 푸는 것은 내가 이해하는 것이 아니다"라고 생각할 수 있지만, 코드 한 줄 한 줄을 이해하고 누군가에게 설명할 수 있는 정도로 숙지하면 된다.

method 2. 복습문제 Queue를 관리하라.

  • 직접 풀이를 떠올리거나 구현해내지 못한 문제들을 주말이나 자신만의 주기에 다시 풀어보라

 

method 3. 같은 유형의 문제들을 몰아서 푼다.

  • 백준문제를 난이도별로 풀고 난 후, 같은 유형별로도 풀어보기를 추천한다.
  • 공통적인 풀이 방법이 보이고 자연스럽게 체득된다.
  • 코딩테스트 문제는 결국 문제은행이므로 문맥만 바꿔서 출체하는 경우가 대부분이다.

Q. 어떤 유형부터 시작해야 할까?

  1. 단순 구현 유형부터 시작하라
  2. 그 다음 완전탐색 유형으로 넘어가라

이 두 유형은 순수 구현 능력을 기르는 데 좋다.


코딩 테스트란

코딩테스트란, 알고리즘 문제 풀이 시험이다. 제한된 시간 내에 알고리즘 문제를 풀게 함으로써 문제를 코드로 해결하는 능력을 측정하는 시험이라고 생각하면 된다.

 

기업, 분야, 전형마다 조금씩 차이는 있지만, 일반적으로 많은 기업이 개발자 채용 전형으로 크게는 서류 → 기술 면접 → 임원 면접(인성 면접, 컬처 면접, 팀 면접 등…) 의 세 가지 단계를 거치기 마련이고, 이 중에서 코딩테스트는 서류와 기술 면접 사이에 주로 실시하는 절차이다. 

 

코딩 테스트는 단순히 알고리즘과 자료 구조를 얼마나 알고 있는지를 검사하기 위한 목적이 아니다. 제한된 시간 안에 문제를 해결하게 함으로써, 구현해야 하는 문제를 얼마나 잘 이해하는지, 생각을 코드로 얼마나 잘 옮기는지, 여러 예외 상황을 떠올릴 수 있고 적절히 처리할 수 있는지 등 개발자가 가져야 할 여러 능력을 평가한다. 이 과정에서 알고리즘과 자료 구조를 가미함으로써 같은 기능을 구현하더라도, 효율적으로 구현할 수 있는 능력까지 평가할 수 있는 매우 중요한 시험이다.

 

이 코딩 테스트를 통해 기업들은 지원자가 지닌 개발자로서의 다방면을 평가할 수 있는 것이다.

 

코딩 테스트를 대비하는 것은 논리적으로 생각하는 힘을 기르기에 매우 좋은 방법이다. 코딩 테스트를 준비하면서 잘 설계된 여러 알고리즘과 자료 구조를 접하고, 이를 이용해 코딩 테스트 문제를 해결해 나간다면 언어에 더욱 익숙해지는 것은 물론이고, 어떤 프로그램을 작성하던 논리적으로 풀어나갈 수 있게 될 것이다.

 

코딩 테스트는 수학 문제와 같아서 많이 풀면 풀수록 실력이 올라간다. 문제를 많이 풀어 봄으로써 코딩 테스트 문제의 유형에 익숙해진다면, 실제 코딩 테스트에서도 전혀 당황하지 않고 오히려 문제를 모두 푼 후 시간이 남는 모습을 발견할 수 있을 것이다.


Q. 개발자로 취업하려면 코딩 실력을 보는 코딩테스트를 거쳐야 하는데 어느 정도 수준이어야 하나?

“코딩테스트는 보통 150분 동안 3개의 알고리즘 문제를 해결하는 방식으로 진행되는데 너무 걱정할 필요는 없다. 코딩테스트는 실력자를 뽑기 위한 절차가 아니고 이 정도도 못하는 사람은 거르자는 취지로 진행하는 최소한의 과정이다. 단기간에 알고리즘 상급자가 되긴 어렵고 취업준비생이 상급자가 될 필요도 없다.

만약 중급자 수준 코딩테스트를 원활하게 풀 수 있다면 웬만한 기업 시험은 통과할 수 있을 것이다. 프로그래머스 플랫폼이 제공하는 테스트의 레벨 2, 3 정도가 이에 해당한다고 보면 된다. 기본적인 코딩 실력이 있다면 2주에서 길면 한두 달 정도 투자해 수능시험 준비하듯 집중적으로 준비하면 된다.”

 

추천 사이트
1. 백준(최소 100문제) / 골드레벨까지

2. 프로그래머스 (0~2레벨까지) / 100문제
https://solved.ac/

 

코딩 테스트를 준비하는 방법

1단계: 자료구조 및 알고리즘 개념 공부하기

코딩 테스트에 제대로 대비하기 위해서는 연습 문제를 풀기에 앞서 이론을 탄탄히 다지는 단계가 필요하다. 이론을 공부하지 않고 닥치는 대로 연습 문제만 푸는 것은 부실한 토지에 건물을 올리는 것과 같은 꼴이다.

코딩 테스트에서는 보통 단시간 안에 풀 수 있는 알고리즘 문제가 출제되는데, 이런 유형의 문제를 풀기 위해서는 기본 자료구조 및 자주 사용되는 알고리즘 개념을 알아두어야 한다. 수많은 자료구조와 알고리즘 개념 중 반드시 공부해야 하는 주제 몇 가지를 선정해 보면 다음과 같다.



자료구조

  • 배열 (Array)
  • 해시 테이블 (Hash Table)
  • 연결 리스트 (Linked List)
  • 스택 (Stack)
  • 큐 (Queue)
  • 힙 (Heap)
  • 트리 & 그래프 (Tree & Graph)


알고리즘

  • 이진 탐색 (Binary Search)
  • 정렬 (Sorting)
  • 재귀 (Recursion)
  • 너비 우선 탐색 (BFS)
  • 깊이 우선 탐색 (DFS)
  • 백트래킹 (Backtracking)
  • 동적 계획법 (Dynamic Programming)


각 주제에 관한 설명은 수많은 책, 블로그, 영상 강의에 자세히 나와 있으니 각자 잘 맞는 방식을 선택해서 공부하면 된다.

참고 : HackerRank의 유튜브 채널(영문) - 코딩 면접의 바이블이라 불리는 <코딩 인터뷰 완전정복(원제: Cracking the Coding Interview)>의 저자 Gayle Laakmann McDowell이 직접 자료구조에 대한 설명해준다. 더불어 어떤 알고리즘 문제를 풀 때 해당 자료구조를 쓰면 좋은지 실질적인 예제를 통해 보여주기 때문에, 실제 문제를 풀 때 참고하기에 좋다. (자료구조 영상 / 알고리즘 영상)

 

2단계: 빅오 표기법 마스터하기

알고리즘 문제를 푸는 방식은 딱 한 가지로 정해져 있지 않다. 하나의 문제도 여러 방식으로 풀 수 있기 때문에 어느 한 가지 방식만이 정답이라고 할 수는 없다. 답이 여러 개 있는 셈. 그러나 더 효율적인 답을 가려낼 수다. 일반적으로는 더 짧은 시간 안에(시간 복잡도), 더 적은 메모리를 사용하면서(공간 복잡도) 문제를 해결하는 코드가 더 효율적인 답이다.

이러한 시간 및 공간 복잡도를 나타내는 대표적인 방법이 빅오 표기법(Big-O Notation)이다. 개발자는 본인이 구현한 코드를 빅오 표기법을 이용해 분석할 수 있어야 한다. 라이브 코딩 테스트 때 면접관이 “이 코드의 시간 복잡도는 어떻게 되나요?”라는 질문을 하면 막힘없이 대답할 수 있어야 하며, 시간 복잡도와 공간 복잡도의 거래 관계(trade-off)를 이해해야 한다. 아직 이게 익숙지 않다면 충분한 연습을 통해 빅오 표기법을 마스터하는 것을 권한다.

 


비전공자도 코딩 테스트를 준비해야하는 이유

코딩 테스트를 포기하는 이유?

  1. 코딩 테스트를 보는 회사에는 어차피 서류 합격도 못할 것이다.
  2. 코딩 테스트를 준비할 시간이 없다.
  3. 지금부터 준비하더라도, 더 오래 준비한 전공자들에게 밀릴 것이다.
  4. Java(개발 언어), Spring(프레임워크)도 제대로 못하는데 무슨 코딩 테스트? (백엔드)
  5. 코딩 테스트 안봐도 개발로 취업은 하더라.
  6. 조금 해봤는데, 너무 어렵다.
  7. 해야 되는 어떻게 준비해야될 지 모르겠다.

 

포기 이유 반박1. 코딩 테스트를 보는 회사에는 어차피 서류 합격도 못할 것이다.

"(선입견) 전공자들의 싸움터가 아닐까?"

  • 코딩 테스트를 보는 회사들에 비전공자도 충분히 서류 전형에 통과할 수 있다.
  • 요즘에는 서류 전형보다 코딩 테스트를 먼저 보는 회사들이 늘어나고 있다.
  • 개발자는 학력이나 스펙보다는 개발 실력이 중요한 직업이다. (ex: 일부 제조업/대기업 제외)
  • 서류(이력서)는 불변이지만, 코딩 테스트 실력은 가변이다.

바꿀 수 없는 것보다 바꿀 수 있는 것에 더 시간을 투자하여 나의 가치를 올리자

 

포기 이유 반박2. 코딩 테스트를 준비할 시간이 없다.

  • 코딩 테스트를 준비할 여유는 (백수가 아닌 이상) 영원히 없다.
  • 개발자로 취업한 이후에는 회사 업무를 제대로 하기 위한 공부가 더 급하다.
  • 비전공자들 중에 시간 부족하지 않은 사람은 없지만, 누군가는 코딩 테스트를 준비한다.
  • 남들 놀 때 준비하고, 남들 잘 때 준비할 수 밖에 없다. (생활 속에서 낭비되는 시간을 찾기)

 

포기 이유 반박3. 지금부터 준비하더라도, 더 오래 준비한 전공자들에게 밀릴 것이다.

"어차피 안될 거야" -> 자기효능감의 척도가 낮은 사람의 마인드(소극적)

  • 개발자는 왜 하려고 하시나요? 더 오래 개발 공부한 전공자들에게 밀릴텐데..
  • 비전공자가 개발자의 길로 뛰어든 그 순간부터 불리한 게임은 시작되는 것이다. 앞으로도 유리한 게임은 없다.
  • 불리한 게임이지만 도전할 가치가 있는 이유는, 채용 시장의 개발자 수급 불균형 때문
개발자가 된 이후에는 본인의 실력에 따라 달라짐.
현재 채용 시장의 불균형으로 인해 비전공자가 도전하더라도
하위권 전공자나 실력 향상을 하지 않은 개발자와도 충분히 밀리지 않음
  • 전공자라고 무조건 비전공자보다 잘하는 것은 아니다.
    학교 다닐 때 놀았거나, 개발이 적성에 안 맞는 전공자들도 많다.
  • 코딩 테스트는 전공 시험이 아니다. (코딩 테스트 : 컴공 전공자 = 마라톤 : 체대생)

 

포기 이유 반박4. Java(개발 언어), Spring(프레임워크)도 제대로 못하는데 무슨 코딩 테스트?

  • 개발 언어와 프레임워크는 개발자가 되고 난 후에도 계속 어려울 것이다.
  • 코딩 테스트 준비할 시간까지 전부 개발 언어와 프레임워크 공부에 투입할 필요는 없다.
  • 회사 실무 경험을 통해 익혀나가야 할 개발 언어와 프레임워크를 취준생 시절에 끝장내려고 하는 것은 무모하다.
  • 코딩 테스트는 신입 개발자 취업 때 잘 보는 것이 중요하다. 경력 개발자 이직 시에는 코딩 테스트가 중요하지 않다.
    (신입 개발자 테스트가 더 어렵고, 경력 개발자는 오히려 쉽게 느껴질 수 있음)

 

포기 이유 반박5. 코딩 테스트 안봐도 개발자로 취업은 하더라.

  • 그렇게 취업한 첫 회사에서 생각보다 빨리 이직을 고려하게 될 것이다.
  • (단순히 어디든 취업하기만 하면 된다는 마인드로) 대충 취업하면, 대충 취급당한다.
  • 개발자의 길에 뛰어들었다면, (취업은 어떻게든 되니까) '취업'이라는 두 글자를 목표로 삼지 말고,
    최대한 좋은 회사에 취업하는 게 좋다.
  • 좋은 회사와 그렇지 않은 회사는 하늘과 땅 차이다. (연봉, 복지, 근무환경, 성장환경)

 

포기 이유 반박6. 조금 해봤는데, 너무 어렵다.

  • 이런 경우라면 코딩 테스트 문제와 알고리즘 대회 문제를 구분해야 한다.
  • 절대 평가로 코딩 테스트 합격 여부를 결정하는 회사들도 있다.

코딩 테스트가 쉽게 나오는 경우도 많고, 다 풀지 못해도 통과되는 경우가 있다.

코딩 테스트 실력이 개발 실력과 정확하게 일치하지는 않는다는 점을 회사들도 안다.

코딩 테스트는 절대 평가로 일정 점수 이상이면 통과시키고, 기술 면접에서 변별력을 가져가는 경우가 많다.

  • 단기간 준비한 비전공자도 충분히 승산이 있다.

 

포기 이유 반박7. 해야 되는데, 어떻게 준비해야 될 지 모르겠다.

검색 한 번 하지 않는 경우..


코딩 테스트를 준비해야하는 이유 (강사의 경험담)

첫 회사에서 생각보다 빨리 이직을 고려하게 될 것이다.

23명의 학원 동기들 중, 절반 정도가 첫 회사에서 6개월도 못 버티고 퇴사했다.

  • 첫 회사(스타트업)에서 7개월 만에 중고 신입으로 이직했다.
  • 개발자로서 성장해야 될 시기에, 제대로 성장하기 힘든 환경의 회사에 취업할 확률이 높기 때문이다.
  • 물론 좋은 사수/선임/팀원을 만난다면 첫 회사에 오래 다니는 경우도 있지만, 드물다.
    (실력있는 동료는 대부분 좋은 회사에 지원하거나 모셔가기 때문에 더더욱..)

 

중고 신입으로 이직할 때, 코딩 테스트를 준비하지 않는다면 결국 또 비슷한 수준의 회사로 이직한다.

  • 코딩 테스트를 보지 않고 기술 면접을 까다롭게 보는 좋은 회사들도 있지만,
    대부분의 경우 신입 개발자 채용시에는 코딩 테스트를 본다.
  • 성장하기 좋은 환경의 회사로 이직하고 싶다면, 코딩 테스트를 준비해야 한다.

 

중고 신입 이직 전략 : 스노우볼 굴리기

  • 첫 회사가 3점이라는 가정 하에 5점으로 이직하기보다 추가 비용을 더 해서 7점으로 이직하는 것이 낫다.
    바로 3점에서 10점으로 가기는 어려움. 여기서 말하는 추가 비용이 코딩 테스트 준비
  • 신입이면 7점에 가서 2~3년 정도 경력을 쌓는다.
    (보통 10점 회사의 신입 채용공고는 3년 정도의 개발자 모집이기 때문)
  • 3점에 다니면서 준비하다가 코딩테스트 등 준비하여 중고신입으로 취업 후
    7점에서 경력을 쌓아 10점으로 가는 것이 좋다.
  • 3점도 취업하기 힘든데 어떻게 7점에 가느냐.
    첫 회사에서 개발자로 어필할 재료를 많이 쌓아야 한다.
  • 신입개발자의 경우 성장이 무엇보다 중요한데, 5점에서 2년 다닌 것과
    7점에서 2년 다닌 것을 비교할 때 어느 쪽이 더 성장할 수 있는지도 따져봐야 함.

✔️ 개발자로서 첫 회사에 1년 정도 다니면서 이직 준비를 열심히 하고,
7점 회사들이 신입 개발자를 채용할 때 중고 신입으로 이직하기


■ 참고 영상 및 글

코딩테스트 알고리즘 실력  빨리 올리는 방법 꿀팁
https://youtu.be/LBup2VMVHXw

 

코딩테스트를 준비하는 가장 효율적인 방법
https://youtu.be/0Ty-MYTtuvc

 

개발자 취업 위한 '코딩 테스트', 이렇게 준비하자

『취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략 : 자바 편』 김현이 저자 인터뷰

https://ch.yes24.com/Article/View/52782

 

<취준> 코딩테스트 준비하기 (with. 백준 & 프로그래머스)

https://haesoo9410.tistory.com/351

 

“개발자 취업 첫 관문은 코딩테스트… 중급 실력 정도 돼야 무난”

https://www.donga.com/news/Society/article/all/20210511/106853943/1

 

꽤 쓸만한 코딩테스트 가이드

https://www.inflearn.com/pages/weekly-inflearn-24

 

개발자 면접 완전 정복하기 (1) - 코딩 테스트 편

https://www.wanted.co.kr/events/22_11_s01_b15

 

[준비하기] (8) 코딩테스트 - 1. 준비해야하는 이유

https://velog.io/@productuidev/%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0-8-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A4%80%EB%B9%84%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

[준비하기] (8) 코딩테스트 - 2. 준비방법

https://velog.io/@productuidev/%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0-8-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A4%80%EB%B9%84%EB%B0%A9%EB%B2%95

 

프론트엔드 개발자에게 알고리즘 공부가 미치는 영향

https://velog.io/@teo/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%97%90%EA%B2%8C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B3%B5%EB%B6%80%EA%B0%80-%EB%AF%B8%EC%B9%98%EB%8A%94-%EC%98%81%ED%96%A5

 

개발자로 취업하기 위한 알고리즘 공부법 1강 코딩테스트

https://openingsound.tistory.com/116

 

개발자로 취업하기 위한 알고리즘 공부법 2강 공부방법

https://openingsound.tistory.com/117

 

개발자 취업을 위한 코딩 테스트 준비 방법

https://katfun.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%B7%A8%EC%97%85%EC%9D%84-%EC%9C%84%ED%95%9C-%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A4%80%EB%B9%84-%EB%B0%A9%EB%B2%95

 

비전공자 개발자의 공채 도전기
https://brunch.co.kr/@6531ba48d0414c9/6

 

 

 

 

 

댓글