본문 바로가기
BOOKS BOOKS BOOKS

프로그래머스 코딩 테스트 문제풀이 전략 : 자바편 - 길벗

by 19810721 2023. 4. 17.

프로그래머스 코딩 테스트 문제풀이 전략 : 자바편 - 길벗

개발자들의 평생 숙제 ‘코딩테스트’에 관한 책이 길벗에서 새로 출간되었다.

파이썬과 자바 두 가지 버전이 있는 듯 싶다. 나는 자바 버전을 선택했다.

 

인프런이나 패스트캠퍼스의 강의를 보면 몇 시간의 강의 내용 중 강사가 이론에 대한 설명을 하는 시간은 극히 적고, 코드를 따라 치는 시간을 멍하게 쳐다보고 있어야 하는 경우가 많다. (물론 다 그런건 아니다. ) 이렇게 해야 되요 ~ 네????? 하고 바로 피드백을 할 수 없는 동영상강의의 최대 약점. 자세한 설명은 다음 영상에서 하겠다고 하지만, 다음 영상은 다음 챕터의 내용이다. 한 두 번 속았는가… 물론 유투브에 검색을 해보면 해외의 수 많은 개발자들의 혹은 대학 강의들도 넘치고 넘치는 세상이지만, 동영상 강의의 최대 단점인 필요없는 부분까지 시간을 들여서 seeking 을 해야하는 단점을 부담하지 않기 위해 책을 선택했다.

 

영상과 달리 책은 해당 챕터에서 설명하지 않은 부분이 다음 챕터에서 섞이기 힘들기 때문에 가능한 모두 담으려는 저자의 노력이 들어간다. 코딩테스트를 책으로 배워야 하는 이유와 시험을 준비하며 부족한 부분을 스스로 학습할 때도 유용하다는 내용을 이 글을 통해 전해보고자 한다.

주말을 오로지 책 한 권에 올인했다. 충분히 가치 있는 일이다.

이번 주말 이틀을 온전히 이 책을 다 읽어내는데 투자했다. 한 줄 한 줄 모두 이해하고 놓치는 부분없이 소화하고자 했다. 문맥상 문제가 있다고 빠르게 제보해야 하는 부분도 찾았다. 그만큼 정독을 했다는 이야기를 이렇게 길게 한다.

 

책이 나오고 몇 일 되지 않아 배송 받아서 우선 두꺼운 책에 놀라고 기대를 많이 했다. 이 책을 다 읽은 후 첫 느낌은 과도한 한글화가 오히려 독이 된 것이 아닌가 하는 생각이다. 한글로 번역할 수 없거나 옮기면 오히려 본 뜻을 전달하기 어려운 용어들은 그냥 원문(영문병기)으로 표시하는 것이 차라리 낫다는 생각이다. 이 책 뿐 아니라 많은 기술 서적들이 그러하다. 한글로 옮기는 순간 원래 용어의 뜻을 알 수 없거나 잘못 이해될 수 있는 여지가 있거나 알 수 있어도 오히려 더 힘들게 이해해야 하는 노력이 들어간다. ( 대표적으로 대한민국 모든 학생들을 지옥에 빠트린 to 부정사… ) 기술서적은 가능하면 제목이나 챕터만이라도 원어(영어)를 먼저 쓰고 국어(한글)를 병기하는 형식이면 좋겠다. (제발 좀... ) 초등학교부터 영어를 공부한다는데 국민들의 수준을 너무 낮게 보는 것 같다.

 

코딩테스트에 나오는 이 문제가 어떤 유형의 이론을 바탕으로 하고 있는지, 혹은 이런 문제의 유형은 어떤 이론이 복합적으로 적용되는지를 알아야 하는데 각 챕터 후반에 갑자기 여러 문제가 나오니 파악하기 난해했다. 자료구조나 알고리즘의 카테고리로 나누고 해당 카테고리의 문제를 샘플로 주거나, 코딩테스트에 나오는 주요 유형을 중심으로 사용된 자료구조나 알고지름을 설명하는 방식이었으면 어떠했을까? 하는 아쉬움이 크다. 선생님이 와서 친절하게 설명은 해주는데, 지금이 이론 시간인지 실습 시간인지 어떤 과목 시간인지 혼동되는 느낌.. 세세한 분류가 되어 있지 않아 아쉬웠다.

투포인트와 슬라이딩 윈도우는 포인터를 2개 사용하는 것은 동일하나 분명 다른 유형이기에 하나씩 예제 문제가 나왔으면 했는데 슬라이딩 윈도우 유형에 대한 언급은 없는 것이 아쉽다. 문제는 이러한 유형의 문제를 해결할 때 유용하게 쓰일 수 있는 Double-Ended Queue (Deque, 덱 or 데크) 에 대한 설명은 Stack 이나 Queue 로 충분하며 코딩테스트에 나오지 않는다며 소챕터명을 적어놓았다. 있다는 정도만 알면 된다고 한다. 아… 조금만 더 적어 줬다면… 코딩테스트는 무조건 이 책을 봐라 ~ 할 수 있었을텐데 !!

 

이 부분이 왜 아쉬운가 하면, 어떤 문제든 어느 카테고리의 이론을 바탕으로 하는 유형(패턴)으로 풀 수 있는 문제다 ~ 라고 친절히 적어줬다면… 독자는 책에서 부족함을 느낀 갈증을 다른 수단 (구글 형님) 으로 해결 할 수 있는 키를 쥐어 줄 수 있지 않았을까? 싶은 아쉬움이다. 코딩테스트는 그저 코드를 작성할 수 있는 기본 교양을 알아보는 일중의 테스트 일 뿐인데, 여기도 한국인의 피가 흘러 뭐든 문제의 패턴을 찾아서 빨리 풀어야 하는 본성에 가깝게 다가갈 수 있게 도와주는 책이었다면 (엄청 잘 팔렸을텐데?)

 

사족이긴 하나, 몇 몇 설명 중 트리를 위 방향으로 하지 않고 아래 방향으로 ( 정확히는 ROOT 라고 해야 하는 거 아닌가 ) 하는 건 뭐 글로벌 표준이니 그렇다 치는데, 이 책에서는 마인드 맵을 그리는 것처럼 트리/루트를 좌에서 시작하여 우로 그려 설명하는 것을 보고 조금 놀랬다. 초급자들은 혼돈에 빠진다. 저자도 편집자도 힘들었을텐데 굳이? 왜 그랬을까 싶다.

 

장점을 나열해보자면

 

왜? 에 대한 설명이 충실하다. 인프런 동영상 강의를 보면 커리큘럼에 맞춰 찍으려다 보니 어디 블로그에 올라온 문제나 공개된 시험의 문제를 정답 혹은 동작만 하면 그만인 소스를 가져다 코드를 논리의 순서가 아닌 코드의 라인 순서대로 적으면서 이렇게 풀면 됩니다~ 하고 넘어가는 케이스가 너무 많았다. 이론적 배경이나 과정에 대한 충분한 설명이 없는 경우가 많은데, 책이라는 매체 특성상 책을 쓰다보면 한 부분이라도 놓치면 저자가 스스로 스트레스 받기 때문에 ( 책 써보면 안다. ) 코드 한 줄 한 줄 독자에게 자세히 알려주고 싶어하는 마음이 전달이 될 정도로 상세하다. 문제 정답을 던져놓고 왜 이렇게 했지? 에 대한 생각조차 할 수 없을 정도로 몰아 붙인다. 이렇게 해도 되고 저렇게 해도 된다. 근데 이 방법을 쓰면 더 좋다. 최소 두 세가지 방안을 제시하고 마지막엔 코딩테스트와는 별개로 알아두면 좋겠다면서 추가적인 설명도 한다. 이 분은 코드에 진심이다. 코딩 테스트에 스트레스 받지 않아도 되는 사람일지라도, 자바 문법에 대한 활용도만 가져가도 반은 본전 찾은 듯 싶다. 책을 읽어 가는 가운데 연필로 체크 표시 한 부분이 많다. 정답이 아니라 지혜를 얻는 기분마저 든다.

 

아는 것은 점검하고 모르는 것은 배우기 좋다. 코딩테스트를 준비하다보면 처음에는 무작정 문제를 풀다가 좌절하는 경우가 있었다. 이 문제가 어떤 유형의 문제인가는 둘째치고 이게 사람이 풀 수 있는 문제인가? 하는 고통을 넘어 ‘나는 개발자인가?’ 하는 철학적 질문을 스스로 남기게 되는 고통의 시간이었다. 많은 코딩테스트 문제를 풀어보는 것도 물론 경험의 측면에서 나쁘다고는 할 수 없지만, 우리가 가진 시간 자원은 분명 한계가 있으니 책을 사서 연필로 체크해가며 코딩테스트에서는 이런 유형의 문제들이 나오는구나 하고 정리해보는 시간을 가져보기를 바란다. 아는 것은 확실하게 파악하고 정리하고 시험에서 당황하지 않도록 하고, 전혀 몰랐던 유형의 문제들은 책에서 제시해주는 문제 말고도 동일 유형의 문제들을 검색하여 몇 문제를 더 풀어볼 수 있다면 책이 가진 장점을 100% 활용할 수 있는 방법이라고 생각한다.

 

책을 읽다보면 소소한 팁들이 많이 보인다. 그런 팁을 모여 자신의 것으로 만들어 낸다면, 시험에서 5초, 10초.. 1분을 아낄 수 있으리라 본다. 내 것으로 만드는데 이렇게 빠른 방법이 있는 줄 알았다면, 진즉 책으로 공부할 걸 그랬나 싶다. 동영상 강의가 나쁘다~ 라기 보다는 책을 통하면 훨씬 빠르고 속도를 스스로 컨트롤 할 수 있는 장점이 있다는 면을 꼭 이 글을 통해 전하고 싶다.

 

그동안 코딩테스트라는 스트레스로 버려진 나의 준비 시간을 생각해보면 아깝다 !!. 주말을 이 책을 보느라 모두 소진하고 잠들었다가… 누군가는 스트레스에서 벗어나지 못하고 개발 능력에 대한 자기계발이 아닌 시험 준비에 고통받는 우를 범하지 말기 바라는 노파심에 새벽 4시에 이 글을 쓰고 있다.

 

‘No Money, No Text’ 라는 스스로의 규칙도 깨고 ㅎㅎ 블로그에 서평을 남긴다. 책을 받든 밥을 얻어 먹어야 글이 써지는 것이 세상의 이치이지만(?), 내 돈 주고 샀으니 내 맘대로 글을 적는 것도 해보고 싶었다.

 

챕터 10 이후로는 다시 상세히 자세히 개발자들의 감탄을 이끌어 낼 수 있을 정도의 “고급 과정” 책을 내주기를 진심으로 바란다. 그렇다면, 입문자와 전문가 모두 한 권씩은 갖고 있어야 하는 ‘코딩테스트의 바이블’이 될 수 있지 않을까 기대해본다.

 

요약

정작 상세히 들어가야 할 어려운 부분에 대한 후반 챕터에 자세하고 충분한 설명이 없어 아쉽다.

코딩 테스트 기본 단계까지 설명하는 책 혹은 풀이 영상은 세상에 너무나 많다.

뒷심이 많이 부족했다. 그래서 “고급편” 책이 추가로 있으면 좋겠다. 그러면 책 좋다는 소문 금방 날거다(?)

 

마무리

한 권의 책으로 100% 만족하기는 당연히 어렵다고 생각한다.

기술서의 성격을 가진 수험서에 가깝다.

코딩테스트 합격을 위해서는 최소 2~3권의 코딩테스트 관력 책을 놓고 학습하기를 바란다.

그래야 놓치는 부분이 없고 자신이 약한 부분에 대한 보완이 가능하리라 생각한다.

 

 

내돈내산