처음 처음 | 이전 이전 | 1 | 2 | 3 | 4 | 5 |다음 다음 | 마지막 마지막
코딩 테스트를 위한 자료 구조와 알고리즘 with C++ - 67개 문제 풀이로 익히자!
존 캐리.셰리안 도시.파야스 라잔 지음, 황선규 옮김 / 길벗 / 2020년 12월
평점 :
장바구니담기


코딩테스트를 위해 가장 많이 준비하는 언어는 무엇일까?


출처: http://www.codingworldnews.com/news/articleView.html?idxno=2061



압도적으로 C++이 44%를 차지하고 있고, 2위로는 파이썬이 차지하고 있다. C++은 최근의 코딩테스트가 기업에서 도입되면서 많이 쓰인 다기보단 예전 미국에서부터 개발자를 채용하기 위해 많이 사용해온 언어이다. 또한 각종 올림피아드 대회, 코딩대회에서도 많이 쓰여왔다. 또한 C++은 각 시스템의 핵심적 모듈기능을 많이 담당해오고 있기 때문에, 단순 코딩테스트를 목적 보단 학교에서 배운 자료 C++ 자료 구조부터 그리디 알고리즘, 분할 정복 알고리즘, 그래프 알고리즘, 동적 계획법과 같은 다양한 알고리즘을 설명한다. 

자료 구조와 C++ STL 클래스 구현 사이의 관계를 설명해 주어진 문제에 가장 적합한 자료 구조를 선택할 수 있도록 도와준다. 챕터 별로 그림을 통한 설명도 잘 되어있고, 이론을 익힌 후 44개 연습 문제와 23개 실습 문제로 직접 코딩해보며 체계적으로 학습할 수 있게 구성되어 있다. 

길벗 출판사에서 운영하는 github 사이트( https://github.com/gilbutITbook/080239 ) 에 챕터별 예제소스와 실전문제 소스가 공유되어 있어서 각자의 개발환경에 맞추어 다운받거나 셋팅해서 step by step으로 확인 가능하다.
근데 이 경우 직접 프로젝트(vsc 2019기준)를 구성하여 소스를 돌려봐야하는데, 역자의 github사이트에 visual studio 2019 기준에 맞추어 생성한 개발환경도 구성 가능하다. ( https://github.com/sunkyoo/CPP-Data-Structures-and-Algorithms )
 


완전 C++에 대해 모르는 초보자를 대상으로는 접근하기 어렵다고 생각한다. 코딩 테스트를 준비하는 취업 준비생과 최신 C++ 문법으로 알고리즘을 새로 공부하려는 사람들에게 추천한다. 어느정도 기본 개념을 알아야 한다고 생각하고, 디버깅해보면서 공부하기에 좋은 내용이라고 생각했다. 



출처: https://gopae02.tistory.com/156 [bluish wolf]


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬 알고리즘 인터뷰 - 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트, 2021 세종도서 학술부문
박상길 지음, 정진호 그림 / 책만 / 2020년 7월
평점 :
장바구니담기


다들 알다시피 원하는 좋은 IT분야의 기업에 가기 위해서 코딩인터뷰 준비는 필수이다. 이를 위해 자료구조/알고리즘은 많이 공부하지만 실제 코딩테스트를 준비하거나 응용력을 높이기 위해 어떻게 해야 할지 어려운 경우가 많다. 관심이 있는 친구들이면 코딩인터뷰 완전분석 cracking the coding interview 책 또는 다양한 알고리즘 책이나 백준온라인저지, codility, leetcode 프로그래밍 사이트에서 실력을 테스트 해보기도 한다.


 우선 이 책은 실제 카카오 코딩인터뷰 문제를 준비한 박상길 저자분이 작성하여 카카오 및 리트코드 사이트의 문제를 다루고 있다. 그리고 막연히 문제를 풀어내고 이렇게 하면된다. 라기보단 자료구조와 알고리즘 카카오 공채 문제를 갖고 설명해준다. 실제 마인드 맵을 통해 배열, 연결리스트, 스택, 큐, 데크, 우선순위 큐, 해시테이블, 그래프, 최단경로, 트리, 힙, 정렬, 이진검색, 비트조작, 슬라이딩윈도우, 그리디 알고리즘, 분할 정복, 다이나믹 프로그래밍 등 목차별로 학습할 수 있다.

 

사실 온라인으로 문제를 풀때는 자기가 잘하는 언어로 풀이를 해도 좋지만, 시간적인 제약사항등을 생각하지 않을 수 없다. 수도코드로는 생각해냈어도 표현하는 개발언어를 어떤걸 선택하느냐에 따라 시간이 부족하거나 남을 수도 있는데 아무래도 요즘 대세는 파이썬3이 아닐까 싶다. 그런점에서 이 책에서 파이썬을 위주로 진행된다. 그렇다고 파이썬을 그냥 쓰면 되요 라기보다는 왜쓰는지 그냥 쓰면 안되고 필요한 고급문법은 어떤건지 친절하게 설명해주고 있다. 기초파이썬 책에서 놓치기 어려운 내용을 잘 담아두고 있다.


 실제 문제로 들어가보면 하나의 문제를 갖고도 많은 접근방식이 있을 수 있음을 포용하고 있다. 보통 다른 책들에서는 하나의 문제에 하나의 풀이만 갖고 설명하는 경우가 많이 있다. 하지만 우리가 실제 비즈니스 로직을 코딩하고 코드리뷰를 통해 하나의 방법만 있는 게 아닌 여러 개의 방법이 있는 경우 개선하거나 검증할 수 있는데 이 책에서는 그런 점이 잘 녹아 있다. 예를 들어 첫 번째 문제는 ‘유효한 팬린드롬’인데, 풀이가 리스트로 변환, 데크자료형을 이용한 최적화, 슬라이싱사용, c언어(?)까지 4가지 방식을 설명해주고 있다. 그리고 각각의 풀이 방식에 따른 실행시간을 비교해 알려주었고, 필요할 때마다 파이썬 문법 팁도 있다. 

 


솔직히 책을 보면서 코딩인터뷰를 준비하는 목적보다도 파이썬을 이용한 자료구조/알고리즘을 통해 문제풀이 능력을 키우고 싶은 생각이 든다. github에 제공된 소스를 갖고 직접 해보고 디버깅해보며 데이터가 흘러가는걸 보면서 재밌다고 생각한다.

그리고 부록으로 회사 및 이직가이드 와 카카오 공채문제 풀이도 제공되는데 모두 좋은 내용이라 처음부터 끝까지 잘 챙겨보면 좋을 것 같다. 그리고 아무래도 내용이 충실하다 보니 두께가 좀 있는 편인데(724쪽) 원하면 내용을 분철해서 다녀 갖고 봐도 좋을 것 같다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
코틀린을 다루는 기술 - 코틀린답게 코딩하자!
피에르 이브 쏘몽 지음, 오현석 옮김 / 길벗 / 2020년 3월
평점 :
장바구니담기


구글이 2019년부터 코틀린을 안드로이드에서 우선으로 지정하고 난 뒤 많은 app뿐만 아니라 자바환경의 웹에서도 코틀린으로 많이 대체하고 있다. 내가 읽은 다른 책과 다른 점은 우선 단순 자바와의 비교 또는 예제를 위주로 작성된 책이 아니었다. 코틀린은 함수형 프로그래밍에서 비롯된 많은 기법에 친화적으로 설계되어 자바에서 갈증이 있었던 부분을 많이 해소시켜주고 기존 자바소스와 혼합해 사용해도 문제없을 정도로 통합이 잘되어 있다는 점이다.

전체적으로 650여 페이지로 구성된 얇지 않은 책이다. 아에 코틀린을 모른다면 조금 난이도가 있을 것 같다. 소개글부터 지은이의 자바의 대한 고민과 코틀린에 대한 생각을 엿볼수 있어, 어떻게 이 책을 구성하려 했는지 느낄 수 있다. 1장부터 바로 코틀린의 역사 뭐 이렇게 시작하지 않고, 어떻게 프로그램을 더 안전하게 만들지에 대해 작성하였다. 함수형 프로그래밍을 구현하는 데 필수적인 문법적 요소도 잘 설명하고, 함수형 라이브러리를 구현하는 과정을 샘플 코드로 단계적으로 설명하였다.

또한 참조 안전성을 확보하기 위한 불변성 개념, 스택 안전한 꼬리호출을 설명하기 위한 재귀와 공재귀 개념, 반복 계산을 방지하여 연산 성능을 높이는 메모화, 분기를 함수 내부로 위임하여 오류를 방지하고 재사용성과 투명성을 확보하는 선택적 데이터 구조의 개념, 파이프라이닝을 통해 연산의 연쇄를 더욱 효율적이고 효과적으로 만드는 지연 계산의 개념 등 함수형 구현의 근간을 이루는 핵심 개념들을 설명과 그림, 코드, 연습문제 구성 등으로 되어있다. 연습문제도 힌트와 해법으로 잘 구성되어 있으니, 한번쯤은 더 고민해보면 좋을 것같다.

 실습 소스의 경우 https://github.com/gilbutITbook/080208 에 올라와있는데, 추천하는 환경인 intelliJ에서 매끄럽게 실습하면서 배울 수 있다.

역자 오현석님은 “Kotlin in Action” 및 함수형 프로그래밍에 대한 책을 다수 번역하여 두개의 경험을 잘 잡을 수 있는 좋은 책 소개를 해주었다. 단순 코틀린의 겉핥기가 아닌 함수형 프로그램의 안전성 측면 뿐만 아니라 추사항화로 모듈화, 안전성을 달성하는 특성을 알고 싶다면 차분하게 읽고, 예제를 수행해보면 좋을 것 같다.  



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
모두의 딥러닝 - 자연어 처리, GAN, 오토인코더, 전이 학습 등으로 나만의 모델을 만든다 with 텐서플로2.0 & 케라스, 개정2판
조태호 지음 / 길벗 / 2020년 1월
평점 :
구판절판


딥러닝 분야의 베스트셀러 길벗출판사의 모두의 딥러닝이 개정2판으로 돌아왔다. 이번 개정2판에서 가장 눈에 띄는 부분은 텐서플로 2.0이 반영되어 있다는 점이다. 소개에 나와있는 것처럼 GAN, 오토인코더, 자연어 처리, 전이 학습 등 새로운 내용을 수록되어 있다.

그리고 나와 같이 수학이 부족한 사람들 위한 기초수학 개념도 추가되어 이해를 돕고 있다. 실행 소스의 경우 주피터를 통해 바로 확인 가능한 구조로 되어있다. 그리고 부록에서 구글 코랩, 파이참을 통한 실행환경도 설명이 되어있다. 기본 소스도 출판사 사이트 및 깃허브에 공개되어 있다. 실제로 아나콘다, 텐서플로, 케라스 등 화면을 통한 순서대로 설치하면서 따라 해볼 수 있다.

욕심 부리지 않고 차분히 내용 설명을 찾아보고, 모르는 부분에 대해서는 별도로 더 깊게 확인해 나가며 기본 원리를 잡고 나가면 여기에 나와있는 실제 프로젝트를 통해 자신의 것으로 만들어 볼 수 있다.

 전체적인 구성은 5개의 파트와 심화 학습으로 되어 있다.

첫번째로 딥러닝 준비운동이 있는데, 개발환경 세팅해보고 실제로 코드를 돌려볼 수 있다. 다만 기본적인 파이썬의 문법은 알고 있는 것이 좋다. (파이썬 3.7 기준) 간단하게 딥러닝 코드를 맛본 뒤, 기초수학으로 들어가는데 딥러닝을 이해하기 위한 일차함수,기울기 절편등부터 미분,편미분,지수,로그 등에 대해 되짚고 넘어간다.

 두번째로 답러닝의 동작 원리다. 선형 회귀(예측선 긋기), 경사하강법(오차수정하기), 로지스틱 회귀(참 거짓판단)을 공부할 수 있다. 개념에 대해 설명 뿐만 아니라, 그래프, 그림, 기본 파이썬 코드 등으로 이해하기 쉽게 되어있다.

 세번째는 신경망인데, 딥러닝을 설계할 때 반드시 필요한 신경망과 역전파의 개념에 대해 배운다. 많이 들어봤던 퍼셉트론, 다층 퍼셉트론, 역전파에 대해 나오는데 앞에서 이해한 동작원리 선형회귀에 대한 이해를 바탕으로 신경망의 내부로 들어와 학습하게 된다. 개념뿐만 아니라 도표, 용어 설명을 쉽게 풀어주고 있어 좋다.

 네번째는 실전 프로젝트인데, 기본적으로 배운 내용을 갖고 해볼수 있다. 인디언의 당뇨병 예측이다든가 아이리스 품종 예측 등이 있는데 주제에 대해 나오고 샘플 데이터, 속성, 클래스 구분 등을 통해 함수별로 단락별로 파이썬 코드를 통해 설명해주고 있어 이해하기 좋았다

 다섯번 째로 딥러닝 활용인데 CNN, RNN, 자연어처리, GAN, 전이학습 등이 나온다. 이것도 실전 프로젝트와 유사한 구조로 개념 설명해주고 어떻게 수행할지 예를 들어 이미지인식의 경우 그림의 각 좌표를 숫자로 표현하던걸 확인하고, 각 파이썬 코드를 통해 라인별로 어떻게 진행되는지 직관적으로 나와있다.

 마지막으로 심화 학습의 경우 역전파와 신경망에 대해 조금 더 자세한 설명이 추가되어 있다. 단순히 코드를 가져다 쓰는 걸 목표로 하는 게 아닌 상세한 공부를 전공하고 싶어하는 사람들을 위한 친절한 설명이 가미되었다. 개념 설명과 그림 그리고 공식 등이 주를 이루는데 어렵더라도 기본기를 다지기 위한 사람들은 좋은 내용이 될것 같다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
단단한 머신러닝 - 머신러닝 기본 개념을 제대로 정리한 인공지능 교과서 제이펍의 인공지능 시리즈 (I♥A.I.) 24
조우쯔화 지음, 김태헌 옮김 / 제이펍 / 2020년 2월
평점 :
장바구니담기


 

국내에 소개된 대부분의 IT 전문서적이 아시아 쪽이 아닌 미국, 유럽 등에서 만들어지고, 한국에서는 주로 번역된 전문서를 접하게 되는데 이렇게 중국에서 작성된 책은 처음이다. 소개 글에서 확인해보면 중국에서 머신러닝의 교과서와 같이 인식되고 있고, 출간하고 4년동안 약 50만부 넘게 판매가 되었다고 해서 눈길을 끌었다.

이 책은 500페이지 가까운 두꺼운 책인데, 특정 알고리즘을 갖고 이렇게 저렇게 하면 만들어 볼 수 있다는 알고리즘 소개 위주의 책은 아니다. 특정 라이브러리나 언어 또는 플랫폼을 갖고 만들어 보는 책이 아니라는 점이다. 그렇다 보니 그런 방식을 원하는 사람들에게 적합하지 않을 수도 있다. 머신러닝 도감의 경우 책 소개에서도 알 수 있듯이 머신러닝의 전반에 대한 지도 Guide하는 입문서의 성격이라고 보인다. 물론 교과서, 참고서 같은 구조로 되어있다 보니 딱딱하고 다소 어려울 수 있지만, 차분하게 공부하면 기본기를 다져 나갈 수 있을 것 같다. 단순히 코딩만 배우기보다는 차분하게 여기서 말하는 정도를 걸어보고 싶다.

이 책은 머신러닝 기초에 대해 1~3(서론, 모델평가, 선형모델 등)에서 다루고, 전통적이고 자주 사용하는 머신러닝 방법론을 다루는 4~10(의사결정트리, 신경망, 서포트 벡터머신, 베이지안 분류기 등)이 있다. 고급내용은 11~16(특성선택과 희소학습, 계산학습이론, 준지도 학습, 강화학습 등)까지 다루고, 부록에서 행렬, 최적화, 확률분포를 보충 설명해주고 있다.

상세한 목차, 내용은 직접 확인해보면서 공부하면 될 것 같고, 이 책 사용하는 법까지 책에 나왔다. 그런데  나의 기준으로는 아직 어려운 부분이 많으니까 이 책을 교과서 삼아서 모르는 부분은 찾아보고 여러 번 반복해서 읽어야 할 것 같다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
처음 처음 | 이전 이전 | 1 | 2 | 3 | 4 | 5 |다음 다음 | 마지막 마지막