메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

[그래프로 정리] 코딩 테스트에 가장 많이 출제 되는 알고리즘과 합격권 점수를 알아 보겠습니다.

한빛미디어

|

2020-09-18

|

by 나동빈

60,067

 

이것이 코딩 테스트다_썸네일 (5).jpg


 

코딩 테스트는 ‘기업/기관에서 직원이나 연수생을 선발할 목적으로 시행하는 일종의 문제 풀이 시험’입니다.

일반적으로 대기업의 공채와 같이 지원자가 많은 상황에서 효과적으로 지원자를 선별하기 위해 상당수 기업에서는 코딩 테스트를 채용 과정으로 채택하고 있어요.

 

IT 직군에서 코딩 테스트를 보는 대표적인 기업으로는 삼성전자, 카카오(KAKAO), 라인플러스코퍼레이션(LINE Plus Corporation 이하 라인)이 있고요. 

 

예를 든 기업은 모두 코딩 테스트를 시행하며, 응시생들에게 2 ~ 5시간가량의 시간을 주어 정해진 알고리즘 문제를 풀도록 한다는 공통점이 있습니다. 

 

더불어 정확한 알고리즘을 사용하여 얼마나 빠르게 많은 문제를 풀었는지를 토대로 순위를 매기고 있습니다.  

 

이렇게 정해진 시간 내에 문제를 푸는 방식은 코딩 테스트뿐만이 아니라 다수의 시험에서 차용하고 있는 오래된 시험 방식이며, 코딩 테스트에서도 계속 사용할 것으로 예상 됩니다. 

 

물론 IT업계에서는 알고리즘 문제를 푸는 방식을 제외하고도 요구사항에 맞는 소규모 프로그램을 개발하는 유형, 논문이나 책을 읽고 관련 프로그램을 작성하는 유형 등 다양한 코딩 테스트 유형이 존재한다. 

 

하지만 가장 대표적인 코딩 테스트 유형은 알고리즘 코딩 테스트죠. 

해마다 조금씩 시험 유형이 변경되기도 하지만, 여전히 공채에서는 주로 알고리즘 문제를 출제합니다. 

 

특히나 지원자의 수가 많을 때는 알고리즘 문제가 평가하기에 가장 용이하고 문제 해결 능력을 평가하는 데 있어 알고리즘 문제 만큼 좋은 것이 없기 때문입니다. 

 

코딩 테스트는 문제 해결 능력을 확인하는 시험이다.

그렇다면 기업은 코딩 테스트를 통해 취업 준비생에게 무엇을 요구하는 걸까요? 

많은 사람이 코딩 테스트가 뛰어난 프로그래밍 실력을 요구하는 관문이라 생각하는데, 이는 맞지 않아요. 

 

대체로 채용을 위해 기업에서 주관하는 코딩 테스트에서는 매우 높은 사고력이나 어려운 알고리즘 기반의 지식을 요구하지 않아요.

 

이런 코딩 테스트에서는 주로 기초 알고리즘에 기반하는 문제가 출제됩니다.

그중에서도 가장 출제 빈도가 높은 문제는 그리디(Greedy), 구현(Implementation), DFS/BFS를 활용한 탐색 문제입니다.

 

특히 그리디 문제 유형은 문제 해결 방법만 떠올린다면 간단하게 구현할 수 있어 자주 등장하는 유형입니다. 

구현 문제는 실제 개발 과정에서 사용될 법한 구현 기법들을 물어보는 경우가 많습니다.

 

또 상대적으로 높은 사고력을 요구하는 다이나믹 프로그래밍이나 그래프 이론 문제도 출제된다. 

 

다만, 이런 유형의 문제는 출제되더 라도 난이도가 높지 않은 경향이 있다.

실제로 정수론, 최단 경로 문제, 고급 다이나믹 프로그래밍 문제 등은 경쟁적 프로그래밍(Competitive Programming )대회에서나 고난이도로 등장하며 기업 코딩 테스트에서는 출제율이 낮고 상대적으로 쉽게 출제되는 편이다.

 

경쟁적 프로그래밍 대회란, 일반적으로 알고리즘 대회를 의미한다. 흔히 알고리즘 대회를 지칭하는 또 다른 말로 문제 해결(Problem Solving) 대회라는 용어를 사용하기도 하는데, 이는 줄여서 ‘PS’라고도 한다.

 

다음 그림은 2016 ~ 2019년 사이에 출제되었던 주요 기업들의 공채에 등장한 알고리즘 유형을 정리한 도표이다. 

중복을 포함하여 알고리즘 유형을 빈도수에 따라 표현하였습니다.

 

한 문제에서 정렬과 이진 탐색 알고리즘이 동시에 사용되었다면, 정렬과 이진 탐색 모두 도표에 반영하였다.

 

실제로 상당수의 문제는 문제를 해결하는 데 여러 가지 알고리즘을 요구합니다.

따라서 코딩 테스트를 준비하는 여러분은 복합적인 알고리즘을 요구하는 문제들을 염두에 두고 공부하시면 좋아요.

 

스크린샷 2020-09-18 오후 4.37.59.png

기업은 어떻게 문제를 출제하고 있는가?

다음은 카카오 기술 블로그에 있는 코딩 테스트 문제 난이도에 대한 내용입니다. 

 

“ACM-ICPC 같은 어려운 알고리즘 설계 능력을 겨루는 문제가 아닌 업무에서 있을 만

한 상황을 가정하여 독창적이고 다양한 분야의 문제를 출제했고, 난이도 또한 비교적 쉬

운 수준으로 조정하였습니다.”

 

블로그 글이 올라온 2017년도의 카카오 코딩 테스트 문제를 확인해보면 ‘그리디 혹은 구현 유형의 문제’를 다수 확인할 수 있있습니다.

 

카카오 코딩 테스트는 문자열을 처리해야 하는 구현 문제를 자주 출제 하는 것으로 유명한데, 구현 문제는 문법을 안다고 해서 쉽게 해결할 수 있는 문제는 아닙니. 

 

다양한 케이스를 고려해야 안정적으로 만점을 받을 수 있는 문제들이 주로 출제됩니다. 

 

그렇다면 삼성전자의 코딩 테스트는 어떨까요? 

 

인터넷에서 삼성전자의 코딩 테스트 후기와 복원된 문제를 쉽게 찾아볼 수 있는데, ‘문제를 바르게 읽고 예외 상황을 적절히 처리하는 방식으로 소스코드를 작성하는 유형’이 가장 많이 출제되었다는 후기가 많습니다. 

 

또한 문제 유형은 모든 상황을 고려해야 하는 완전 탐색 문제가 많이 출제되는 것으로 유명하죠. 

 

다시 말해 삼성전자의 코딩 테스트는 완전 탐색, DFS/BFS, 구현 유형의 문제를 가장 선호한다는 의미 입니다.

 

물론 코딩 테스트 문제에서 출제되는 알고리즘 이론이 쉽다고 해서 문제를 쉽게 풀 수 있다는 의미는 아니에요.

한 예로 그리디 유형의 알고리즘은 ‘현재 상황에서 가장 좋은 것만을 선택하면 되는 알고리즘’이라서 굉장히 쉬워 보이죠.

 

실제로 난이도가 낮은 ‘거스름돈’ 문제 같은 그리디 문제는 쉽게 해법을 찾아낼 수 있습니다.

하지만 그리디 유형의 문제는 출제자가 마음만 먹는다면 매우 어려운 난이도로 출제할 수 있어요.

 

단지 기업의 코딩 테스트는 테스트의 목적인 ‘직원 선발’에 맞는 수준으로 난이도를 조정했을 뿐입니다.

문제 해결 대회라면 얼마든지 매우 높은 난이도의 그리디 유형 문제도 출제할 수 있습니다.

 

일반적으로 알고리즘 코딩 테스트는 2 ~ 5시간 가량의 제한된 시험 시간에 8개 이하의 문제를 푸는 형태로 출제됩니다. 

 

평상시 프로그램을 개발하거나 학교 과제용 문제 풀이에 비하면 심리적으로 부담이 되는 편입니다. 

따라서 이런 시간 제한이 있는 코딩 테스트는 연습해두지 않으면 평소의 문제 해결 기량에 비하여 좋은 성과가 나오지 않을 수 있습니다.

 

자격증 시험이나 어학 능력 시험만을 응시해본 학생들은 단순히 ‘몇 시간 동안 8문제 이하의 문제를 푼다면 시간이 충분하겠다’라고 생각을 할 수 있습니다.

 

저도 짧은 시간에 다수의 문제를 푸는 것에 익숙했던 대학생 시절에 알고리즘 대회를 처음 준비할 때 똑같이 생각했었거든요. 

 

실제 접해보면 알겠지만, 알고리즘 분야는 다른 분야에 비해서 문제 해석에 투자해야 하는 시간이 긴 편입니다.

이렇듯 다른 시험보다 문제를 해석하는 데 투자해야 하는 시간이 길다 보니, 대부분의 코딩 테스트에 참여하는 취업 준비생은 풀이 시간이 부족하고 촉박하다고 느낍니다. 

 

그렇다면 알고리즘 코딩 테스트에서는 몇 개의 문제를 해결해야 합격할 수 있을까요? 

 

출제자의 의도에 따라서 다르겠지만, 대부분의 알고리즘 대회 및 코딩 테스트에서는 상위 5% 미만의 사람만 올 솔브(All Solve)할 수 있으며, 전체 문제 중에서 절반가량을 정확히 해결할 수 있다면 합격하는 정도의 난이도로 출제됩니다.

올 솔브란 제시된 모든 문제를 다 해결한 것을 의미한다.

 

문제 난이도와 합격 비율을 확인해보는 차원에서 삼성전자, 라인, 카카오 세 기업에서 이루어진 채용 목적의 코딩 테스트에 한 번이라도 참가해본 적이 있는 2년 차 이하의 IT 직군 신입을 대상으로 설문 조사를 진행했습니다.

 

다음의 설문 조사 결과를 보면 합격 처리를 받은 사람은 평균 69%의 문제를 풀었으며, 불합격 처리를 받은 사람은 평균 38%의 문제를 풀었다고 응답했습니다. 

 

코딩 테스트는 일종의 주관식 시험으로 많은 양의 문제를 맞혀야 하는 어학 능력 시험과는 사뭇 다른 양상을 보입니다.

 

출제 문제를 100%로 봤을 때 푼 문제의 개수

스크린샷 2020-09-18 오후 4.38.21.png

 

응답자들에게 코딩 테스트의 체감 난이도를 물었을 때 다음과 같은 응답을 받았습니다. 

응답자들의 답변을 보면 코딩 테스트에 대한 부담감은 있지만, 예상 외로 어렵게 출제되지는 않았다고 볼 수 있습니다.

 

다만, 이는 절대적인 난이도 수치이며, 상대적인 난이도에 대한 정보는 조사하지 않았습니다.

 

스크린샷 2020-09-18 오후 4.38.34.png

 

설문 조사 결과를 바탕으로 ‘절반 이상의 문제를 안정적으로 해결했을 때 코딩 테스트에 합격할 수 있다’는 것을 예상할 수 있습니다.

 

물론 코딩 테스트는 항상 상대평가를 위한 척도입니다. 

문제의 난이도가 낮고, 지원자의 수준이 높다면 커트라인은 100%에 가깝게 높아질 수도 있습니다. 

 

반대로 한 국가 교육기관의 코딩 테스트에서는 지원자의 수준에 비해 문제 난이도가 높게 출제되어 합격 커트라인이 20% 미만으로 형성된 적도 있었어요. 

 

문제 해결 능력은 상대적이므로 코딩 테스트를 준비하는 사람이라면 코딩 테스트에 자주 출제될 법한 문제를 보다 많이 살펴보는 것이 유리하다는 것을 인지해야 합니다. 

 

다음 연재에서는 연도별 코딩 테스트의 유형을 분석하겠습니다. 

글이 도움이 되셨다면 <좋아요!> 꼭 부탁 드리고요. 

성공적인 취뽀 하세요!

 


위 내용은 <이것이 취업을 위한 코딩 테스트다 with 파이썬>의 일부를 재구성 하여 작성 되었습니다.


<관련도서>

 이것이 취업을 위한 코딩 테스트다 with 파이썬

:취업과 이직을 결정하는 알고리즘 인터뷰 완벽 가이드, C/C++, 자바 코드 제공 

 

 

 

04_이것이 취업을 위한 코딩 테스트다 with 파이썬_입체표지.png

 

  • 저자:나동빈
  • 출간:2020-08-05
  • 페이지: 604 쪽
  • ISBN:9791162243077 
댓글 입력
자료실

최근 본 상품0