제로베이스 커넥to에선 ‘코딩테스트’ 이렇게 준비합니다

| 자료구조/알고리즘 김태원 강사님 인터뷰

커넥to 강사님이 궁금하세요?


네카라쿠배 HTML/CSS 담당 김데레사 강사님

사진= 커넥to 자료구조/알고리즘 담당 김태원 강사님

  • 프론트엔드/백엔드 개발자, 데이터 사이언티스트 등 IT 관련 직종으로 가는 첫 관문인 코딩테스트. 네카라쿠배 코딩테스트 95% 합격시킨 방법, 궁금하셨나요? 코딩테스트 통과를 넘어, ‘좋은 문제해결력’ 갖춘 개발자 되기 위해서 커넥to에서는 어떻게 공부할까요? 자료구조/알고리즘 김태원 강사님에게 들어봤습니다.

안녕하세요 강사님, 자기소개 부탁드립니다.


안녕하세요. 김태원입니다. 2004년부터 정보올림피아드 전문학원을 2020년까지 운영했고, 지금은 커넥to에서 자료구조와 알고리즘을 강의하고 있습니다.

| 예비 개발자가 자료구조/알고리즘을 배워야 하는 이유

자료구조/알고리즘 관련 지식은 개발자로 일하는 데에 왜 필요한가요?


많은 개발자들이 현업에서 일할 때 자료구조와 알고리즘은 그렇게 중요하지 않다고들 합니다. 흔한 말로 “수학을 왜 배우냐 더하기 빼기만 하면 사는데 지장없다” 라는 말과도 일맥상통하죠. 하지만 학생 때 수학을 배우는 이유는 창의적이고, 논리적으로 생각하는 방법을 배우기 위한 것입니다. 인생을 살아가다 보면 올바른 선택을 해야 할 때 논리적 사고가 필요한데요, 알고리즘도 마찬가지입니다.

이를 체감한 에피소드가 있는데요. 예전에 한 팀에서 개발하다 발생한 문제를 해결하지 못해 3~4일이 지나도 해결하지 못한 적이 있었다고 해요. 그런데 알고리즘을 잘 한다고 소문난 프리랜서 개발자가 2~3시간 만에 적절한 자료구조와 알고리즘을 선택해 문제를 해결했고, 이를 보고 깜짝 놀랐다는 말을 들은 적이 있습니다.

이렇듯 자료구조와 알고리즘을 꾸준히 공부해야 하는 이유는 다른 사람이 생각하지 못한 것을 생각해내고, 논리적인 사고를 통해 적절한 방법을 골라 소프트웨어를 최적화하는 능력을 기르기 위해서입니다.

| 코딩테스트 준비, 어떻게 시작하는 게 좋을까?

알고리즘을 처음 공부하는 분들이 가장 어려워하는 것은 무엇인가요?


개념 이해를 힘들어하는 것 같습니다. 막무가내로 외우는 것이 아니라, 이해하고 체화해야 한다고 생각해요. 그 다음에 창의력을 발휘해서 문제 풀이에 접근해야 합니다. 주제별로 카테고리를 공부한 뒤, 문제풀이 하는 것을 추천합니다. ‘네카라쿠배’라 불리는 기업에서는 높은 문제해결력을 가진 사람을 뽑으려 하니, 쉽지 않더라도 체계적으로 익혀나가야 합니다.

​코딩테스트를 위한 프로그래밍 언어는 어떤 것을 선택하는 것이 좋을까요? 그 이유는요?


초심자 분들에게는 파이썬 언어를 추천합니다. 라이브러리가 잘 되어 있고 코드 자체도 매우 간결하게 구현할 수 있습니다. 조금 능숙한 편이라면, C++를 추천합니다. 컴파일 언어이기 때문에 속도면에서는 타 언어에 비해 매우 빠릅니다. 그렇지만 취업준비생이라면 최소 2개 이상의 언어는 다룰 줄 알아야 한다고 생각합니다. 각 회사마다 코딩테스트 언어를 특정 언어로 지정할 수 있기 때문이죠.

| 자료구조/알고리즘 커넥to에서는 이렇게 배웁니다

커넥to에는 비전공자와 전공자가 섞여 있는데, 난이도는 어떤 수준으로 가르치고 계신지 궁금합니다.


비전공자가 있다고 해서 그 수준을 낮추지는 않습니다. 우리 커넥to의 목표는 ‘네카라쿠배’ 기업 수준에 맞는 개발자를 길러내는 것이기 때문이죠. 최대한 주어진 기간 동안 원리부터 익힐 수 있도록 초급 수준에서 시작해 고급 자료구조와 알고리즘까지 체계적으로 배우도록 설계되어 있습니다.

3주 동안 진행되는 자료구조/알고리즘 수업의 구성에 대해 들려주세요.


첫째 주는 선형자료구조(배열, 연결리스트)와 스택, 큐, 데크를 이용한 문제해결법 그리고 시간복잡도를 줄이는 효율적인 코드 작성법에 대해 배웁니다.

둘째 주는 그리디 알고리즘과 이분검색 알고리즘을 통한 문제해결법, 재귀함수를 이용한 DFS(깊이우선탐색), 큐를 이용한 BFS(넓이우선탐색) 관련 많은 문제들을 풀어봅니다.

셋째 주는 다이나믹(동적계획법) 프로그래밍과 비선형 자료구조인 트리와 그래프)에 관련된 알고리즘을 배웁니다. 그 외에 BST(이진검색트리), BIT(인덱스트리), MST(최소스패닝트리), Trie(트라이), 그래프 관련 최단거리 알고리즘등도 배웁니다.

| “문제해결력 기르려면 유형별로 차근차근 익혀야 합니다”

신입 개발자가 갖춰야 할 자료구조/알고리즘의 지식 수준은 어느정도인가요?


많은 주제들을 다 공부하는 게 좋습니다. 제일 중요한 것은 발생한 문제를 해결하는 데 어떤 자료구조가 적절하고, 알고리즘은 어떤 걸로 해야 최적인지를 생각해내는 능력을 갖추는 수준이라고 말씀드릴 수 있을 것 같습니다.

취준생분들이 가장 궁금해하는 점은 ‘알고리즘 공부 방식’이 아닐까 싶습니다. 유형별로 하나씩 독파하는 방식, 유형과 관계없이 무조건 많은 문제을 푸는 방식 중에서 어떤 쪽을 추천하시나요?


시간적 여유가 있다면, 주제별로 공부하는 게 효과적이라고 말씀드리고 싶습니다. 예를 들어 그리디(greedy) 관련 이론을 배우고 그리디 관련 다양한 문제들을 풀어보면 쉽게 그리디에 대한 이해도가 높아지고 그리디 관련 응용력도 높아지겠지요.

해시테이블, 스택, 큐 등 자료구조 개념 중 ‘이것만은 꼭 마스터해야 한다’ 하는 것이 있을까요?


무엇이 중요하고, 덜 중요하다고 말할 수는 없는 것 같습니다. 자료구조와 알고리즘은 매우 밀접한 관계를 갖기 때문이죠. 1, 2차원 배열을 잘 다루는 사람이 트리나 그래프도 잘 다룰 수 있는 것처럼 어디가 딱히 중요하고, 중요하지 않다고 말할 수는 없습니다. 문제해결력을 얻기 위한 최소한의 필요조건이라 생각합니다.

| 자료구조/알고리즘, 공부만큼 중요한 ‘마인드 컨트롤’

코딩테스트를 처음 준비하는 사람에게 필요한 마인드는 무엇일까요?


처음 시작하면 화도 나고 답답할 겁니다. 좌절하고, 포기하기 쉬운데 그걸 이겨내야 해요. 누구나 거치는 단계입니다. 정말 어렵습니다. 정규 교육과정과는 전혀 다르죠. 컴퓨터의 입장에서 사고를 해야 하고, 그렇기 때문에 굉장히 생소한 문제들이 많습니다. 문제를 접하면 분석부터가 안되는 것이죠.

하지만 그 시간을 이겨내면서 ‘그래도 한번 해보겠다’고 생각해야 합니다. 조급해하거나, 완벽하게 혼자 힘으로 풀려고 하지 말고, 처음 준비하는 단계에서는 힌트를 봐 가면서 너그럽게 준비하세요. 해설을 봐도 괜찮습니다. 첫 단계에서는 그렇게 준비하세요.

​​오랜 기간 수많은 강의 현장에 계셨을텐데, 커넥to 수강생들이 다른 점이 있었나요?


커넥to 수강생에게는 무엇이든지 할 것 같은 눈빛이 있어요. 눈빛을 보면 아주 초롱초롱해요. 설레는 마음, 간절한 마음도 보이고요. 좋은 태도가 좋은 결과를 이끈다고 생각해요. 수백, 수천명에 달하는 다른 지원자들의 희생이 있었으니, 그들의 몫까지 열심히 하시고, 초반에 보여주었던 간절한 마음을 끝까지 유지했으면 좋겠습니다.

| “네카라쿠배 코딩테스트, 결과로 증명합니다”

자료구조/알고리즘 수업의 최종 목표는 무엇인가요? 코딩테스트를 통과하기 위한 실력을 갖추는 것인지, 그 이상이라면 어떤 것인지 궁금합니다.


우선적으로는 수강생분들을 네카라쿠배 코딩테스트를 무난히 통과하는 실력으로 만드는 게 목표입니다. 결국 결과로 증명을 해야 하니까요. 궁극적으로는 창의적 생각과 논리적 사고를 기르는 데 초점을 맞추어 강의를 하려고 합니다.

​커넥to 수강생분들이 남은 기간 코딩테스트를 어떻게 공부하면 좋을까요?


지금은 다른 과목을 공부하고 프로젝트를 진행하느라 바쁘겠지만, 이틀에 한 문제는 풀어보셔야 합니다. 감이 떨어지면 안 됩니다. 최소한 코딩테스트를 통과해야 면접이라는 기회가 주어지는 것이니까요. 문제풀이에 대한 감을 유지하고, 사고는 확장하세요. 프로그래머스 레벨 3까지는 꼭 풀고, 제가 드렸던 문제 목록을 풀어보고, 스터디하고, 일주일에 한번이라도 생각들을 발표하세요. 내가 공부한 것을 ‘내 것’으로 만드는 건 복습만이 답입니다. 복습이 필수입니다.

마지막으로, 커넥to 지원을 고민하는 분들께 한마디 부탁드립니다.


자료구조, 알고리즘은 혼자 준비하기엔 정말 힘듭니다. 비교적 수월하다고 말하는 것들도 기술적으로 보면 난이도가 있고, 쉽지 않아요. 혼자 독학하면서 시간을 비효율적으로 쓰지 말고, 전문가들에게 와서 효율적으로 배우면 좋겠어요. 여러분들에게 이 시기는 정말 귀중한 시간이니까, 과감하게 커넥to에 도전해서 몇 개월을 투자해보시면 좋겠습니다.

패스트캠퍼스에서 6년간의 교육 경험을 통해 만든
‘네카라쿠배 스쿨’이 '커넥to'로 변경되었습니다.


제로베이스와 함께한 이야기가 더 궁금하다면,