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

한빛출판네트워크

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

알고리즘 문제 풀이 전략

프로그래머의 취업, 이직을 결정하는

한빛미디어

집필서

판매중

  • 저자 : 조중필 , 한현상 , 이주호
  • 출간 : 2016-06-01
  • 페이지 : 724 쪽
  • ISBN : 9788968482700
  • 물류코드 :2270
  • 초급 초중급 중급 중고급 고급
3.8점 (6명)
좋아요 : 175
알고리즘 문제 해결 능력은 선택이 아닌 필수다!
소프트웨어 역량 테스트를 준비하는 프로그래머의 필독서!
초급 프로그래머가 고급 프로그래머로 성장하는 과정에서 겪는 가장 큰 어려움은 알고리즘 문제를 이해하고 해결하는 능력이다. 이런 이유로 외국의 많은 IT 기업은 프로그래머 채용 시 코딩 테스트 중심의 면접 과정을 진행해 알고리즘 이해도를 확인하고 있다. 최근 국내 기업에서도 프로그래머의 채용 과정 중 하나로 4~5단계 레벨로 구분하는 알고리즘 테스트를 꼭 포함시키고 있다.
이 책은 이러한 추세에 맞춰 다양한 알고리즘 문제를 해결하는 데 꼭 필요한 40여 가지의 알고리즘 문제 풀이 전략을 소개한다. 프로그래머로서의 실력 향상은 물론이고 취업, 이직, 승진, 알고리즘 대회 입상 등 프로그래머의 이력 관리에 관심이 있다면 꼭 이 책을 읽고 고급 프로그래머가 될 수 있기를 희망한다.

 

detail.png

 

조중필 저자

조중필

미국 대학에서 수학을 전공하고 여러 스타트업을 거치며 실리콘밸리에서 교육용 앱 개발 회사를 설립했다. 한국을 비롯한 아시아 국가의 초·중·고등학교 학생들이 주입식 교육으로 인해 창의성이 부족함을 안타까워하면서 글로벌 인재로 성장하는 데 필요한 새로운 교육법을 개발하려고 불철주야 고민 중이다.
한현상 저자

한현상

컴퓨터 공학을 전공하고 아이폰 열풍이 한창이던 2010년, 몇몇 친구들과 의기투합해 교육용 앱 개발 회사를 설립했으나 실패한 경험이 있다. 현재는 IT 업계 프로그래밍 교육 분야의 팀장이다.
이주호 저자

이주호

영문학과 재학 중에 C를 접한 후 전공 선택이 잘못되었음을 깨닫고 바로 컴퓨터 공학으로 진로를 변경했다. 현재는 프리랜서 개발자로 미래를 개척 중이다. 과거의 자신처럼 진로 선택이 잘못된 젊은이가 없도록 올바른 진로를 선택할 수 있는 커리어 컨설턴트가 되고 싶은 야망이 있다.

 Part I. 꼭 알아야 하는 필수 알고리즘

 

CHAPTER 1 알고리즘의 역할

    01 알고리즘의 정의

        알고리즘이란?

    02 알고리즘은 정말 필요한가?

        알고리즘이 없어도 프로그램을 실행할 수 있다?

        알고리즘의 세 가지 요소

    03 수학적 배경

        알고리즘의 수학적 표기 방법

        빅오 표기법의 시그마 사용 방법

    04 분석의 대상

        무엇을 분석할 것인가?

        반복문은 최대 반복 횟수로 계산한다

        중첩된 반목문은 중첩문 각각의 최대 반복 횟수를 곱해서 계산한다

        반복문이 떨어져서 2개 이상 있는 경우는 그중 가장 큰 값으로 계산한다

        if-else문은 알고리즘 성능에 영향을 미치지 않는다

        재귀 호출은 풀어서 계산한다

    05 알고리즘의 분석과 최적화

        프로그램의 수학적 분석 예

        프로그램의 최적화 예

    06 정리

 

CHAPTER 2 알고리즘을 배우기 전에 알아야 할 다섯 가지

    01 메모리와 주소의 관계

    02 자료형과 배열

        메모리와 자료형

        메모리와 배열

    03 배열의 응용

        함수와 일차원 배열의 사용

        다차원 배열

    04 포인터

        포인터는 왜 사용할까?

        포인터의 사용 형식

    05 배열과 포인터의 사용

        배열과 포인터의 기본적인 조합 방법

        배열과 포인터의 차이점

        배열을 사용하는 포인터를 함수의 매개변수로 사용

    06 포인터 배열과 포인터 연산

        포인터 배열이란?

        포인터 연산의 이해

    07 포인터의 활용: Call by reference

    08 정리

 

CHAPTER 3 기본적인 자료구조

    01 링크드 리스트란?

    02 링크드 리스트의 삽입과 삭제

        링크드 리스트의 특징

        링크드 리스트의 삽입 알고리즘

        링크드 리스트의 삭제 알고리즘

    03 이중 링크드 리스트

        이중 링크드 리스트

        이중 링크드 리스트의 삽입과 삭제 알고리즘

    04 스택의 개념과 알고리즘

        스택의 개념

        스택의 구현

        푸시와 팝

    05 큐의 개념과 알고리즘

        큐의 개념

        배열을 사용한 큐의 구현

        링크드 리스트를 사용한 큐의 구현

    06 정리

 

CHAPTER 4 트리

    01 트리의 개념과 주요 용어

        트리의 개념

        트리 관련 주요 용어

        이진 트리

        트리의 순회 알고리즘

    02 전위 순회 알고리즘

    03 중위 순회 알고리즘

        재귀 호출을 사용한 중위 순회

        스택을 사용한 중위 순회

    04 후위 순회 알고리즘

        재귀 호출을 사용한 후위 순회

        스택을 사용한 후위 순회

        스택을 사용하는 순회 알고리즘의 비교

    05 단계 순회 알고리즘

    06 정리

 

CHAPTER 5 트리의 응용

    01 AVL 트리

        이진 트리의 문제점

        AVL 트리

        AVL 트리의 구성

    02 2-3 트리

        AVL 트리의 문제점을 해결하는 2-3 트리

        2-3 트리의 구현

        2-3 트리의 변형

    03 정리

 

CHAPTER 6 기본 정렬 알고리즘

    01 다양한 정렬 알고리즘

    02 선택 정렬 알고리즘

        선택 정렬 알고리즘의 개념

        선택 정렬 알고리즘의 분석

    03 삽입 정렬 알고리즘

        삽입 정렬 알고리즘의 개념

        삽입 정렬 알고리즘의 분석

    04 버블 정렬 알고리즘

        버블 정렬 알고리즘의 개념

        버블 정렬 알고리즘의 분석

    05 셸 정렬 알고리즘

        셸 정렬 알고리즘의 개념

        셸 정렬 알고리즘의 분석

06 정리

 

CHAPTER 7 향상된 정렬 알고리즘

    01 퀵 정렬 알고리즘

        퀵 정렬 알고리즘의 개념

        퀵 정렬 알고리즘의 분석

    02 기수 정렬 알고리즘

        기수 정렬 알고리즘의 개념

        기수 정렬 알고리즘의 분석

    03 병합 정렬 알고리즘

        병합 정렬 알고리즘의 개념

        병합 정렬 알고리즘의 분석

    04 힙 정렬 알고리즘

        힙 정렬 알고리즘의 개념

        힙 정렬 알고리즘의 분석

    05 정리

 

CHAPTER 8 이진 검색 알고리즘

    01 이진 검색 알고리즘

        이진 검색 알고리즘의 개념

    02 이진 검색 트리 알고리즘

        이진 검색 트리 알고리즘의 특성

        이진 검색 트리 알고리즘의 데이터 삽입

        이진 검색 트리 알고리즘의 데이터 삭제

    03 정리

 

CHAPTER 9 해시 알고리즘

    01 해시 알고리즘

        키-주소 검색 알고리즘

        키-매핑 검색 알고리즘

    02 해시 알고리즘의 문제점

        해시 알고리즘의 데이터 중복 문제

    03 해시 알고리즘의 문제 해결 방법

        해시 알고리즘에서 발생되는 문제들

    04 정리

 

Part II. 실전 알고리즘 문제 해결

 

CHAPTER 10 몸풀기 알고리즘 문제

    01 10진수와 16진수 변환 프로그램

    02 숫자 맞추기

        임의의 숫자를 생성하는 방법

        프로그램이 계속 실행되도록 하는 방법

    03 최대공약수 구하기

        임의의 숫자의 약수를 구하는 방법

        임의의 두 숫자에 공통으로 해당하는 약수를 구하는 방법

        임의의 두 숫자에 공통으로 해당하는 약수 중 최댓값을 선택하는 방법

    04 피보나치 수열

    05 임의의 숫자 배수의 개수와 합 구하기

    06 소수 구하기

        소수를 구하는 기능

        한 행에 값 8개씩 맞춰 출력하는 기능

    07 지그재그 숫자 출력하기 LEVEL 1 Hard

        전체 총 몇 행을 출력하는지 결정하는 for문

        출력할 행이 홀수인 경우의 for문

        출력할 행이 짝수인 경우의 for문

    08 재귀 호출로 최대공약수 구하기

        첫 번째 재귀 호출: x = 4, y = 6

        두 번째 재귀 호출: x = 6, y = 4

        세 번째 재귀 호출: x = 4, y = 2

        네 번째 재귀 호출: x = 2, y = 0

        최종 결과

    09 정리

 

CHAPTER 11 기본기를 다지는 알고리즘 문제

    01 탐욕 알고리즘

    02 세포의 자기 증식 프로젝트

    03 재난 관리 프로젝트

    04 블록 쌓기 게임

 

CHAPTER 12 수학식을 이용하는 알고리즘 I

    01 분할 정복 알고리즘의 특징

    02 하노이의 탑

    03 기약 분수 구하기

    04 동전 옮기기

    05 숫자 순환

 

CHAPTER 13 수학식을 이용하는 알고리즘 II

    01 탐욕 알고리즘의 특징

    02 앞뒤가 같은 제곱

    03 연 소수

    04 최대 연속 부분합

    05 화물차 배치

    06 대칭 행렬 구하기

 

CHAPTER 14 동적 계획법의 기본 개념

    01 동적 계획법의 특징

    02 계단 오르기 게임

    03 타일 바르기

    04 목장 울타리 만들기

    05 한빛스키장 리프트 가격

    06 포인트 스키 활강

 

CHAPTER 15 동적 계획법 응용

    01 동적 계획법의 전형적인 문제

    02 한빛 패스트푸드

    03 시장의 도시 방문기

    04 신입 사원 선발

    05 해커의 도전

    06 배낭 여행

 

CHAPTER 16 맵을 이용하는 알고리즘

    01 백 트래킹 알고리즘의 개념

    02 생화학 폭탄

    03 아파트 단지

    04 피곤한 배달부

    05 체스

    06 배수로 공사

 

CHAPTER 17 출제 빈도가 높은 알고리즘 문제

    01 세뱃돈 만들기

    02 한빛캐피탈의 스타트업 투자

    03 외양간 고치기

    04 영역의 크기

    05 식인종과 연구원

 

부록 Visual Studio 2013의 설치 및 설정 방법

    01 Visual Studio 2013의 다운로드와 설치

        Visual Studio 웹사이트

        Visual Studio 2013의 설치

        Visual Studio 2013의 실행

    02 Visual Studio 2013을 사용한 테스트 코드 빌드와 실행

새로운 프로젝트의 생성

        새로운 소스 코드의 생성

        코드 입력과 빌드 및 실행

    03 실행과 디버깅

        input.txt 파일의 저장 위치

        콘솔에서 실행 파일 입력해 실행하기

11월 15일 리뷰 - 리뷰자 김종욱


 

 

 초판 인쇄가 잘못되어 안타깝게도 별점이 상당히 낮은 책. 그래서 2쇄가 새로이 발행되고 나서 모든 에러가 정정된 환골탈태? 한 책을 이번 기회에 리뷰를 하고자 한다. 무엇보다 이 책은 1년전에 리뷰가 완성되었어야 했음에도 불구하고 본 블로거가 그 동안 너무 많은? 일들인지 게으름인지 모를 상황에 놓여 있어 리뷰를 하지 못햇는데.. 모처럼 시간을 쪼게고 쪼게서 리뷰를 하게되었다. !

  

책에 관한 본격적인 리뷰에 임하기에 앞서 어떤 사람들에게 본 서를 권하는지 적어보도록 하겠다.

 


어떤 독자를 위한 책인가

 

 본 서는 이제 막 알고리즘에 입문하는 분들이나 혹은 알고리즘에 대해서 어느정도는 아는데, 이를 좀더 체계화 하고 싶은 분들이 공부하기에 좋은 구성을 하고 있다. 하지만 아쉽게도 중급자 이상의 분들이라면 이 책을 그리 권하지는 않는다. 중급자 이상의 분들이라면 '코드와 그림으로 마스터하는 알고리즘' 이나 혹은 'Top Coder algorithm Training','문제 풀이로 보는 알고리즘' 책의 내용이 보다 심오하고 생각할 점들이 있기 때문이다. 또한 책의 분석 순서가 나름 체계적이긴 하나 약간 조잡한 감이 없잖아 있기 때문에 본서 만 가지고 공부하기 보단 다른 여러 책들을 참고하며 같이 공부하면 효과가 더욱 향상 될 것이라 생각된다. 

    

책의 구성】 '알고리즘 문제 풀이 전략책의 구성은 어떠한가.


망치 본 서의 구성은 총 17가지의 쳅터로 구성되어있다. 처음에는 알고리즘의 정의를 설명하고 있으며 ( 예전엔 이 부분에서 에러가 심하게 발견 되었지만 지금은 오탈자들이 전부 개선되었다.) 그 다음 장부터는 기본적인 자료구조를 설명한 후에 알고리즘 문제들을 접근하는 식으로 순서가 짜여있다. 다만 본 알고리즘 풀이 과정에서 아쉬운 접근법으로 책이 구성되어 있는게 약간의 흠이라면 흠이다. 가령 테스트 케이스를 보여주고 각각의 테스트 케이스가 단개별로 진행되는 것이 보이지 않거나, 문제가 너무 두리 뭉실하여 알고리즘을 구축하는데 있어서 추론이 어렵다는 문제점 등이 있다. 허나 이 역시도 나름 공부가 되니, 소스코드를 같이 봐가며 분석한다면 실력 향상에 도움이 될 것임이 틀림 없다고 생가된다. ( 블로거의 경우 알고리즘 문제 책 전개 방식은 Top Coder 책이나, 문제풀이로 보는 알고리즘' 책 방식을 선호한다.) 책의 순서는 다음과 같다.

알고리즘 문제 풀이 전략 을 읽으며…….

 알고리즘 문제 해결에 있어서 가장 중요한 것은 전체 탐색을 하여 해당 문제를 전체적으로 살펴 본 후, 가지치키나 혹은 가중치를 두어 해당 솔루션들만 빠르게 추출해 내는 것이다. 가령 다이나믹 프로그래밍이나 재귀적 방식(순열, 조합), 맵을 이용하거나 이러한 것들이 그것에 속한다. 처음에는 알고리즘 문제를 풀때 어려움을 경험할 수 있다. 블로거도 그랬다. 블로거는 옜날 15년 전에 Swap 함수조차 못만들던 때가 있었다. 그만큼 알고리즘은 생소하고 어렵게 느껴지는 것이 현실이다. 하지만 어려움을 인정하고 꾸준히 연습하고 공부한다면 자신도 모르는 사이에 높은 산의 정상 위에 서있는 것을 확인할 수 있을 것이다.



 

점수…….

구성 : ★ 내용:★  디자인: ★★★ 전문성 : 


#본 리뷰는 리뷰자 김종욱의 저작권에 귀속되므로 참고시 참고 URL 명시 및 저작자에게 사용 통보를 해 주시기 바랍니다.

#본 리뷰의 점수 및 평가 내용은 김종욱 리뷰자의 한정된 것이므로 지극히 주관된 평가 임을 명시합니다.

#학습과 관련된 질문과 문제에 대한 질문은 일절 받지 않습니다. 스스로 찾아서 학습하는 것 그것이야 말로 진정한 학습자입니다. 



######  감사합니다  ######  

이책에 계단 오르기 게임의 조건은 다음과 같이 나와 있습니다.

 

- 계단은 한번에 1개 또는 2개의 계단을 오를 수 있다. 즉, 계단 하나를 밟으면 이어서 다음 계단이나 다음 다음 계단으로 오를 수 있다.

- 한꺼번에 2개의 계단을 오를 때는 중간에 있는 계단을 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.

- 마지막 도착 계단은 반드시 밟아야 한다.

 

각 계단에 적혀 있는 점수가 주어질 때 이 게임에서 얻을 수 있는 점수의 최댓값을 구하는 프로그램을 작성해보자.

 

자 어떠신가요? 책에 나온 이 조건만 보면 그냥 모든 계단을 다 밟고 올라가면 최댓값이 나오지 않겠습니까? 사실 이 문제는 '연속된 세계의 계단을 모두 밟아서는 안된다'는 조건이 있어야 하는데 책에는 이 내용이 빠져 있습니다. 이 결정적인 내용이 없이 위 설명만으로는 풀이가 불가능합니다. 

 

검수가 좀 덜된 느낌이에요.

■ [주요 포인트].

 

  • 미리 말씀드리자면, 저처럼 수학에 약하신 분은 조금 각오하고 시작하셔야 할 듯 합니다. 1부의 경우에는 그래도 대학생때 들은 수업시간의 기억을 어렴풋이 더듬어서 진행해보았지만, 2부부터는 슬슬 멘탈(..)이 부서져 내리더군요.
    (고백하자면 16, 17장에 이르러서는 거의 눈물날것 같다 싶은 마음으로, 개념만 훑어보았습니다. 
    스스로의 개념 부족을 절절히 체감하였습니다.)
  • 개인적으로는 그래도 프로그래밍(C언어-배열, 포인터, 구조체)에 대한 기본 개념은 터득하고 계셔야 알고리즘을 풀어나가는 코드 부분을 이해하실 수 있을 듯 합니다.
    (아 물론 C언어에서 포인터가 나오기 시작하면 많은 예비 개발자들이 진땀흘린다는 것을 감안하면,
    단순히 논리적으로 알고리즘에 대한 개념 파악이 아닌 코드로 풀이하는 부분은 조금 난이도가 있는듯 합니다.
    지금 이 포스팅을 진행하는 저도 C언어 한지가 몇 년이 된 경우인지라, 처음에 어..라? 하고 조금 진땀 흘렸습니다.)
  • 책의 진행 중에서 알고리즘을 실제 풀이하는 부분에 들어가면, 입력과 출력이라고 하여 어떤 형식으로 진행될지 예시가 나옵니다.
      ex) 입력 데이터 T개의 테스트 케이스로 이루어져 있고,T는 파일 첫 번째 행에 주어진다.
    그리고 실제 입력되는 파일의 내용이 보여집니다. 
      2
      5
      1 3 5 3 0
    조건에서 주어지는 변수가 늘어나면, 이 숫자가 무슨 변수에 대입된거더라(물론 책의 진도를 따라 진행하다보면, 규칙성이 보이기 시작합니다만) 하고 조금 헷갈리기 시작합니다.
    제시된 파일의 입력 데이터 옆에는 상당한 양의 여백이 보이는데, 이 부분에 이 숫자가 어떤 의미의 변수 값으로 대입된건지 적어가며 이해하려 노력하면 책의 진도를 진행하기에 조금 더 용이합니다.
  • 뒷 부분으로 책을 넘기다보면 소스 양이 점차 길어지기 시작합니다(살짝 울고싶어집니다. 3년차 개발자라고는 하나 업무와 관련된 로직 분기와 같은 부분만 익숙하지, 알고리즘이 담긴 C 언어의 정수(?)를 보면 눈앞이 깜깜해지더군요. 간혹가다 보이는 저자의 한마디 - "간단하다"라는 말은 충분한 멘탈붕괴를 일으키죠.).
    그래도 걱정마세요(지금 읽고 계신 분만 어려운건 아닙니다. 최소한 저도 있으니까요! 한빛미디어 사이트에서는 해당 도서를 초급으로 분류하고 있습니다만.. 괜찮아요. 힘내요. 우리..).
    소스의 일정 부분은 배열의 초기화와 파일 읽기와 같이 중복되는 부분도 적지않게 존재하니까요.
  • 실제 알고리즘 대회를 준비하시는 분들을 위한 팁도 곳곳에 존재합니다.
    개인적으로는 알고리즘 대회때 길이를 구하는 함수 같은 것을 사용하면 안되는 경우도 있다는 것은 처음 알았습니다.
    (알고리즘 대회라는 것 자체를 엄두도 내지 않았었지만요)
  • 오타가 조금.. 상당량 존재합니다
    (..만 개정되겠죠. 그 부분을 감안하더라도 읽을 가치가 상당합니다.)
     

 ■ [총점 및 평론].

 

오타가 상당량 존재한다는 점이 꽤나 아쉬웠습니다. 

 

하지만 그것을 감안하더라도, 
개발자로써 한번쯤은 이 악물고, 울고 싶은 기분일지라도 끝까지 읽어볼 가치가 충분하다고 확신합니다.

다만 한번만 읽어서 될 책은 절대 아닌듯 합니다.(알고리즘과 안친하셨던 보통의 IQ를 지닌 분들은 동의해주시리라 믿고싶습니다..).

개인적으로는 올해 들어서 읽은 책 중 가장 난이도 있는 책이었습니다.

 일부 개발자들과 알고리즘 대회 출전을 준비하는 분들에게만 필요한 것으로 여겨지던 알고리즘이, 면접과 이직시에 개발자들의 능력을 평가하기 위한 도구로 많은 회사에서 사용되는 분위기가 꽤 오랜시간 이어져 오고 있다. 책 제목에 "알고리즘 테스트 시대가 온다!", "프로그래머의 취업, 이작을 결정하는" 내용이 적혀 있는 것도 해당 트렌드를 반영한 것일 것이다.

 

 책은 기본적인 알고리즘에 대한 의미, 측정방법등을 설명한 후에 바로 C언어를 이용한 자료형, 배열, 포인터등을 설명한다. 전반적으로 C언어를 이용하고 있기때문에, 예전 처럼 C언어를 기본으로 배우는 세대가 아닌 분들을 위해 다른 언어에도 있는 제어문이나 금방 익숙해질 부분은 생략하고 C언어에 익숙해지는데 필요한 자료형, 배열, 포인터를 설명하는 것이 지면의 낭비를 막은 것 같았다.

 실제로 한 문제를 실행하는데 걸리는 실행시간과 사용하는 메모리를 제한하는 대회에서는 C언어나 C++을 주로 사용한다고 하니, 적절하다고 할 수 있다.

 

 필수 자료구조인 링크드 리스트, 스택, 큐를 학습 한 뒤에 기본 자료구조의 개념을 이용해 트리를 살펴본다. 특별히 많은 용도로 사용되는 이진트리에 대해서는 부가적인 내용이 충실히 언급되어 있다.

 

 가장 많이 나오는 정렬 알고리즘에는 선택, 삽입, 버블, 셸 정렬 알고리즘이 모두 설명되고 있고, 추가적으로 퀵정렬, 기수정렬, 병합정렬, 힙정렬까지 많이 언급되는 정렬 알고리즘은 모두 설명되고 있다는 생각이 들었다.


 이진 검색 알고리즘과 해시 알고리즘을 마지막으로 알고리즘 문제를 해결하기 위한 기본기를 학습하는 것을 마무리 한다. 거의 책의 절반을 나눌때 앞에 언급한 기본기 학습 부분이 전반부이고, 후반부는 실제 문제를 통해서 알고리즘 문제를 푸는 감각과 능력을 키우도록 구성되어 있다.


 몸풀기 알고리즘 문제는 정말 쉬운 코딩 문제들로 이루어져 있어서 알고리즘 문제에 대해 두려움이 있다면 조금은 날려버리는 시작이 될 수 있을 것이다.

 그 이후 차근 차근 많은 알고리즘 문제를 다루는데, 대회에서도 많이 사용되는 탐욕법(Greedy),

분할 정복(Divide and Conquer), 동적 계획법, 백트래킹(Back tracking) 등을 익힐 수 있도록 골고루 문제가 배분되어 있고, 부록으로 Visual Studio 설치법을 알려주는 것으로 책은 마무리 된다.

 

 이 책의 가장 큰 장점은 쉽다는 것이다. 단계별로 잘 구성되어 있고, 바로 결과를 확인 할 수 있는 짧은 예제들로 이루어져 있는 점이 장점이라고 할 수 있다.

 책의 후반부에 몰려 있는 알고리즘 문제들의 해답들도 평균적으로 공백이나 Bracket만 있는 줄을 포함하고도 60~80줄이라서 따라서 입력하고 이해하는데 어려움이 없는 적절한 소스 크기로 구성되어 있다.

 가장 마지막인 영역의 크기 문제와 식인종과 연구원 문제만 각각 110줄, 207줄이다.


 면접이나 대회의 알고리즘 문제를 해결하기 위해서는 언어 하나는 정말 잘 다룰 수 있어야 하고, 연습이 많이 되어 있어야 하므로 책의 모든 소스가 한빛미디어 홈페이지에 59MB의 압축파일로 전부 올라와 있지만, 길지 않은 소스 이므로 직접 입력하면서 익숙해지는 것을 추천하고 싶다. 소스 중에 오탈자로 등록된 부분도 있으므로 홈페이지에서 미리 확인하면 시간을 절약할 수 있을 것이다.


 책의 단점이자 아쉬운 점이라면, 앞에 시작할때 알고리즘의 평가를 초반에 설명을 하긴 하지만, 실제 알고리즘 문제풀이에서는 사용하는 메모리나 속도에 대해서는 큰 언급이 없다는 점이다.

 실제 대회나 면접에서는 거의 실행 조건이 주어지기 때문에 해당 부분도 항상 언급하면서 문제 풀이과정에 보태졌더라면 더 좋았을 것이라는 생각이 든다.


 또한 8개의 정렬을 소개하는데, 각각 대표되는 정렬들을 마지막에 표와 시각적으로 wrap-up할 수 있는 내용이 추가되면 정리가 더 잘될꺼 같다.


 이 책은 전혀 프로그래밍을 모르는 분들이 보기에는 어렵지만, JAVA나 다른 프로그래밍 언어를 알 고 있는데 C로 알고리즘을 접근하고 싶다면, 이 책이 가장 쉬운 접근이 되지 않을까 생각한다.

 

 

 

 

 본 서적을 다 읽은 후에는 더 많은 알고리즘 문제를 풀어 보고 싶은 생각이 들 것 같다.

프로그래밍을 공부하다 보면 항상 이런 의문이 생깁니다. "과연 알고리즘을 따로 공부해야 내가 원하는 프로그램을 만들 수 있는 것 일까?" 이 질문에 대한 정답은 없겠지만, 알고리즘을 공부하는 과정에서 얻는 경험이 프로그램을 효과적이고 효율적으로 만드는데 도움이 된다는 사실은 부정할 수 없을 것 입니다.

 

시중에는 이미 많은 알고리즘 책이 나와있고, 저 또한 2권의 알고리즘 책을 보유하고 있지만, 끝까지 집중력을 잃지 않고 보기란 쉽지 않았습니다.

 

이 책은 그러한 일반적인 알고리즘 전문 서적의 단점을 해결한 것으로 보입니다. 단순히 알고리즘을 소개하는 것에 그치는 것이 아니라, 공부한 알고리즘을 활용하는 방법도 같이 제공하고 있는데, 바로 정보올림피아드나 IT기업 취업시 면접에 나올법한 문제를 제시하면서 독자의 도전 의식을 불러 일으킵니다.

 

이 책은 제목 부터 '알고리즘 문제 풀이 전략'인데, 책의 많은 부분을 실전 알고리즘 문제 풀이에 할애하고 있습니다. 이러한 책의 구성, 깔끔한 편집, 많은 그림 및 친절한 설명이 집중력을 잃지 않고 이 책을 읽는데 도움이 되었습니다.

 

다만, 책의 예제가 C언어로 되어 있어서, '기본적인 C언어'를 알고 있어야 합니다. 포인터, 배열 등의 개념에 대해서 잘 모르더라도 괜찮습니다. 이 책에서 별도로 자세히 설명하고 있으므로, 'Hello world'를 화면에 출력할 수 있는 정도면 충분한 것 같습니다.

 

끝으로 이 책의 서문에 제시된 학습 로드맵을 잘 챙겨보시면, 알고리즘 공부의 전체 흐름을 확인할 수 있는 것은 물론이고, 학습 능률 향상에 큰 도움이 되는 것 같습니다.

해당 리뷰는 “한빛미디어”에서 제공하는 도서를 이용하여 리뷰를 진행하였습니다.

이 책의 제목은 미사여구를 포함해서 "프로그래머의 취업, 이직을 결정하는 알고리즘 문제 풀이 전략" 입니다.  솔직히 말해서, 국내는 알고리즘 문제를 이용해서 기술 면접이 이루어지는 곳이 엄청 많지는 않습니다. 그리고, 약간 면접관에 의해서 케이스 바이 케이스인 경우도 많구요. 다만, 이제 점점 전화면접이나 온라인 홈워크나 문제 풀이를 이용해서 지원자를 스크리닝 하는 경우는 점점 늘어나고 있습니다. 다만, 외국의 특정 G사, F사 처럼 문제 풀이만 시키는 형태가 되기에는 아직은 시간이 걸릴듯 합니다.

아픈 기억이지만, 저도 실제로 알고리즘 문제만 푸는 면접을 2012년에 본 적이 있습니다.  이렇게 아픈 기억이라고 얘기하는 건, 똑 떨어졌다라는 이야기입니다. 5시간 동안 알고리즘만 풀면... 머리가 안돌아가는...

다시 책 이야기로 돌아와서, 이 책은 크게 두 부분으로 구성되어 있습니다. 기본적인 자료구조/알고리즘 부분...(C코드로 되어있는...) 나머지는 실제로 문제와 그에 대한 해답입니다. 개인적으로 이 책의 최대 장점은 문제 부분보다는, 앞쪽에 잘 정리된 자료구조/알고리즘 부분입니다. 이미지를 통해서 실제로 단계별로 어떻게 이렇게 진행되는지에 대해서 자세히 설명되어 있습니다.(간단한거는 그냥 쉽게 훅 넘기기도 합니다. ㅎㅎㅎ)

 보통 알고리즘 문제를 내는 곳도 엄청 어려운 문제를 내지는 않습니다. 그리고 정답을 맞추는 것보다 정답을 맞추어가는 과정을 중요시합니다. 그래서 실제 이런 문제를 풀 때는, 자신이 생각하는 과정과 풀이 과정을 계속 면접관과 맞추어가는 것이 중요합니다.

 그래서 어떤 자료구조를 선택하고 알고리즘을 선택할 것인가에 대해서 기본기가 튼튼해야 하는데, 이런 부분이 잘 갖춰져 있다는 겁니다. 그리고 문제를 다 풀어보는 것도 꽤나 도움이 될듯합니다. 실제로 같은 문제가 나오지는 않겠지만...(craking code interview 라는 책이 있는데,  인사이트에서 "코딩 인터뷰 완전분석" 이라고 번역되어 나왔습니다. 외국에서 이 책은 거의 취업쪽 바이블로 통하는...) 문제를 풀어보고 연습해 둔다는 것이 상당히 중요합니다. 실제 외국에서도 이직을 할려면 이런 쪽 문제랑 공부를 대략 6개월 정도 합니다.

 사실 제가 약한 부분이던, 전위/중위/후위 순회라든지, 정렬쪽이 상당히 설명이 잘 되어있어서 좋았습니다. 여러 책을 보시겠지만, 앞에서 언급한 책과 함께 보시면 좋을듯 합니다.

 

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
알고리즘 문제 풀이 전략
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
알고리즘 문제 풀이 전략
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
알고리즘 문제 풀이 전략
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1