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

한빛출판네트워크

Programming Challenges: 알고리즘 트레이닝 북

한빛미디어

번역서

절판

  • 저자 : 스티븐 스키에나 , 미구엘 레비야
  • 번역 : 서환수
  • 출간 : 2004-07-14
  • 페이지 : 672 쪽
  • ISBN : 8979142889
  • 물류코드 :1288
  • 초급 초중급 중급 중고급 고급
3.7점 (3명)
좋아요 : 40
책에 명시된 온라인 심사 URL이 https://onlinejudge.org/ 으로 바뀌었습니다.

 

프로그래밍 스킬은 연습을 통해서만 향상된다
프로그래밍적 상상력을 극대화하는 112가지 유형의 알고리즘과 자료구조

 

수학 공식을 많이 알고 있다고 해서 문제를 쉽게 풀 수 있는 것은 아닌 것처럼 프로그래밍에서도 알고리즘을 알고 있다고 해서 또는 언어의 문법을 알고 있다고 해서 프로그램을 잘 작성할 수 있는 것은 아니다. 결국 연습을 많이 해 봐야 한다. 이 책은 국제 프로그래밍 경시 대회 유형의 문제를 통해 학생들에게 알고리즘, 프로그래밍을 비롯한 전산학 분야의 다양한 주제에 대한 관심을 고취시켜 준다. 또한 112개의 프로그래밍 문제 외에도 문제를 해결하는 데 필요한 이론 및 핵심 개념도 수록되어 있다. 따라서 이 책을 통해 알고리즘에 대한 이해와 코딩 실력을 효과적으로 향상 시킬 수 있는 가장 효과적인 방법을 습득할 수 있다.

이 책의 특징

  • 온라인 심사위원 사이트(https://onlinejudge.org/)을 통해 풀이 결과를 바로바로 채점해볼 수 있다.
  • ACM ICPC(ACM 국제 대학생 프로그래밍 경시 대회), IOI(국제 정보 올림피아드), KOI(한국 정보 올림피아드)와 같은 주요 프로그래밍 경시대회 훈련을 위해 활용할 수 있다.
  • 기초적인 자료 구조 및 그래프, 문자열, 수치, 기하 알고리즘 등에 필요한 실제 코드가 수록되어 있다.
  • 독특하고 재미있는 112개의 자료 구조와 알고리즘 문제가 수록되어 있다.
  • 문제의 난이도가 다양하여 수준별 학습뿐만 아니라 도전의 묘미를 맛볼 수 있다.
  • 112문제에 대한 모범 답안뿐만 아니라 문제 해결의 핵심 노하우를 전수한다.

교수들은 각종 업무와 약속으로 가득 찬 복잡한 스케줄 속에서 매우 바쁘게 살아간다. P 교수는 낮잠을 자는 것을 좋아하지만 스케줄이 바쁘다 보니 낮잠을 잘 수 있는 시간이 별로 없다. 하지만 P 교수는 매일 한 번씩은 낮잠을 자고 싶어한다. 물론 그의 스케줄을 감안해서 될 수 있으면 오랫동안 낮잠을 즐길 수 있는 방법을 찾아야 한다. P 교수가 최대한 오랫동안 낮잠을 잘 수 있게 해주는 프로그램을 만들어라.
- 본문의 "낮잠 오래 자기(Longest Nap)" 문제 중에서 -

블라디미르는 새하얀 피부와 날카로운 이를 가지고 있다. 나이는 600살이나 되지만, 뱀파이어인 블라디미르에게 나이는 별 의미가 없다. 블라디미르는 뱀파이어로 살아가는 데 있어서 별 다른 불편함을 느끼지 못한다. 그는 항상 야간 근무를 맡는 의사로 일하고 있는데, 훌륭하게 의사 생활을 하고 있으며, 야간 근무를 도맡아 하다 보니 동료들하고도 매우 사이 좋게 지내고 있다. 그는 파티장에서 맛을 보는 것만으로도 혈액형을 알아맞히는 쇼를 보여주곤 한다. 블라디미르는 여행을 하고 싶은데, 뱀파이어이다 보니 세 가지 문제를 극복해야만 한다.

  1. 항상 관을 가지고 다녀야 하기 때문에 기차 여행 밖에는 할 수가 없다. 다행히도 워낙 오랫동안 돈을 모았기 때문에 재력이 상당하므로 항상 1등칸을 타고 다닐 수 있다.
  2. 황혼에서 새벽까지만, 즉 오후 여섯 시부터 오전 여섯 시까지만 여행할 수 있다. 낮에는 기차역을 벗어날 수 없다.
  3. 뭔가 먹을 것을 가지고 다녀야 한다. 하루에 피를 1리터씩 먹어야 하며, 그의 관 안에서 정오(낮 12시)에 피를 마신다.

두 도시가 주어졌을 때 최단 경로를 찾는 프로그램을 만들어서 블라디미르가 최소한의 피만 챙겨서 여행할 수 있도록 도와주자. 피를 너무 많이 가지고 다니면 사람들이 "그 피 가지고 뭘 하실 건가요?" 같은 질문을 하면서 의심할 수도 있기 때문이다.
- "황혼에서 새벽까지(From Dusk Till Dawn)" 문제 중에서 -

추천평

프로그램은 프로그래밍 언어를 단순히 문법에 맞게 늘어놓은 것 같지만 프로그래머의 사고의 구조가 그대로 투영된 결과물이다. 못쓴 글씨를 남에게 내놓기 부끄럽듯이 엉성한 프로그램은 프로그래머의 지적 구조를 드러내 보이는 사진 건판 같은 것이다. 프로그램을 보면 프로그래머의 도피성 땜질도 볼 수 있고 예술가의 자부심 같은 것도 느낄 수 있다.

프로그래밍 컨테스트는 프로그래밍을 얼마나 잘 하느냐를 테스트하겠다는 것인데 이것은 일반이 생각하는 것처럼 특정 프로그래밍 언어를 잘 사용하는 것과는 별개의 문제다. 프로그래밍 컨테스트는 문제 해결 능력을 테스트하는 것이다. 그래서 문제들은 대개 고도의 수학적, 체계적 사고를 요한다. 대학의 컴퓨터학과에서 배우는 이론 과목인 컴퓨터 알고리즘이 이 부분에 가장 관련이 깊다. - 문병로 교수 추천사 중에서(서울대학교 컴퓨터공학부 교수)

이 책에서 제공하는 문제

문제 1. 3n+1 문제(The 3n+1 Problem)
문제 2. 지뢰 찾기(Minesweeper)
문제 3. 여행(The Trip)
문제 4. LCD 디스플레이(LCD Display)
문제 5. 그래픽 편집기(Graphical Editor)
문제 6. 인터프리터(Interpreter)
문제 7. 체크 확인(Check the Check)
문제 8. 호주식 투표법(Australian Voting)
문제 9. 유쾌한 점퍼(Jolly Jumpers)
문제 10. 포커 패(Poker Hands)
문제 11. 동맹 휴업(Hartal)
문제 12. 암호 깨기(Crypt Kicker)
문제 13. 쌓아 올리기(Stack 'em Up)
문제 14. 에르되시 수(Erd?s Numbers)
문제 15. 경시 대회 점수판(Contest Scoreboard)
문제 16. 야찌(Yahtzee)
문제 17. WERTYU
문제 18. 월도르프를 찾아라(Where's Waldorf?)
문제 19. 공통된 변경 문자열(Common Permutation)
문제 20. 암호 깨기 II(Crypt Kicker II)
문제 21. 자동 심사 스크립트(Automated Judge Script)
문제 22. 파일 조각(File Fragmentation)
문제 23. 더블릿(Doublets)
문제 24. Fmt
문제 25. 비토와 친척들(Vito's Family)
문제 26. 팬 케이크(Stacks of Flapjacks)
문제 27. 다리(Bridge)
문제 28. 낮잠 오래 자기(Longest Nap)
문제 29. 구두 수선공 문제(Shoemaker's Problem)
문제 30. CDVII
문제 31. 셸 정렬(ShellSort)
문제 32. 축구(Football(aka Soccer))
문제 33. 자리 올림(Primary Arithmetic)
문제 34. 뒤집어서 더하기(Reverse and Add)
문제 35. 고고학자의 딜레마(The Archeologist's Dilemma)
문제 36. 1의 개수(Ones)
문제 37. 곱하기 게임(A Multiplication Game)
문제 38. 다항식의 계수(Polynomial Coefficients)
문제 39. 스턴-브로콧 수체계(The Stern-Brocot Number System)
문제 40. 모든 쌍의 합(Pairsumonious Numbers)
문제 41. 피보나치 수의 개수(How many Fibs?)
문제 42. 땅 나누기(How Many Pieces of Land?)
문제 43. 셈(Counting)
문제 44. 표현식(Expressions)
문제 45. 완전 트리 레이블링(Complete Tree Labeling)
문제 46. 수도사 수학자(The Priest Mathematician)
문제 47. 자기기술 수열(Self-describing Sequence)
문제 48. 단계(Steps)
문제 49. 빛, 더 많은 빛(Light, More Light)
문제 50. 카마이클 수(Carmichael Numbers)
문제 51. 유클리드 문제(Euclid Problem)
문제 52. 팩토리얼 나누기(Factovisors)
문제 53. 소수 네 개의 합(Summation of Four Primes)
문제 54. 스미스 수(Smith Numbers)
문제 55. 유리 구슬(Marbles)
문제 56. 재포장(Repackaging)
문제 57. 작은 비숍(Little Bishops)
문제 58. 15-퍼즐 문제(15-Puzzle Problem)
문제 59. 줄(Queue)
문제 60. 서비스 센터(Servicing Stations)
문제 61. 줄다리기(Tug of War)
문제 62. 에덴동산(Garden of Eden)
문제 63. 컬러 해시(Color Hash)
문제 64. 더 큰 사각형(Bigger Square Please)
문제 65. 두 색으로 칠하기(Bicoloring)
문제 66. 원판 돌리기(Playing With Wheels)
문제 67. 여행자 가이드(The Tourist Guide)
문제 68. 슬래시 미로(Slash Maze)
문제 69. 편집 단계 사다리(Edit Step Ladders)
문제 70. 정육면체 탑(Tower of Cubes)
문제 71. 황혼에서 새벽까지(From Dusk Till Dawn)
문제 72. 하노이의 탑 문제 다시 보기(Hanoi Tower Troubles Again!)
문제 73. 주근깨(Freckles)
문제 74. 목걸이(The Necklace)
문제 75. 소방서(Fire Station)
문제 76. 철로(Railroads)
문제 77. 전쟁(War)
문제 78. 여행자 가이드(Tourist Guide)
문제 79. 대만찬(The Grand Dinner)
문제 80. 문제 출제 문제(The Problem With the Problem Setter)
문제 81. 큰 것이 똑똑하다?(Is Bigger Smarter?)
문제 82. 서로 다른 부분열(Distinct Subsequences)
문제 83. 거북이 쌓기(Weights and Measures)
문제 84. 단방향 TSP(Unidirectional TSP)
문제 85. 막대 자르기(Cutting Sticks)
문제 86. 페리 탑승(Ferry Loading)
문제 87. 젓가락(Chopsticks)
문제 88. 여행: 제4부(Adventures in Moving: Part IV)
문제 89. 체스판 위의 개미(Ant on a Chessboard)
문제 90. 외발자전거(Monocycle)
문제 91. 별(Star)
문제 92. 꿀벌 마야(Bee Maja)
문제 93. 강도(Robbery)
문제 94. 2, 3, 4차원 정사각형/직사각형/정육면체/육면체((2/3/4)-D Sqr/Rects/Cubes/Boxes?)
문제 95. 더뮤바 삼각지대(Dermuba Triangle)
문제 96. 항공노선(Airlines)
문제 97. 개와 땅다람쥐(Dog and Gopher)
문제 98. 밧줄나라의 밧줄 파동(Rope Crisis in Ropeland!)
문제 99. 원탁의 기사(The Knights of the Round Table)
문제 100. 초코칩 쿠키(Chocolate Chip Cookies)
문제 101. 생일 케이크(Birthday Cake)
문제 102. 최대/최소 상자(The Largest/Smallest Box)
문제 103. 적분?(Is This Integration?)
문제 104. 얼마나 클까?(How Big Is It?)
문제 105. 신입생 관리(Herding Frosh)
문제 106. 가장 가까운 두 지점(The Closest Pair Problem)
문제 107. 전기톱 학살사건(Chainsaw Massacre)
문제 108. 뜨겁워 차갑워 게임(Hotter Colder)
문제 109. Useless Tile Packers
문제 110. 레이더 추적(Radar Tracking)
문제 111. 섬과 나무(Trees on My Island)
문제 112. 우유(Nice Milk)

스티븐 스키에나 저자

스티븐 스키에나

SUNY 스토니 브룩 전산학과 교수로, 『Algorithm Design Manual』을 비롯한 여러 책의 저자이기도 하다. 2001년에는 IEEE 컴퓨터 분과에서 학부 강의상을 수상했다.

미구엘 레비야 저자

미구엘 레비야

스페인 바야돌리드 대학교 응용수학과 교수다. ACM ICPC의 공식 웹사이트 아카이브 담당자며, 로봇 심사위원 및 경시 대회 호스팅 웹사이트를 운영하고 있다.

서환수 역자

서환수

서울대학교 물리학과에서 학사, 박사 학위를 받았고 지금은 삼성종합기술원에서 물리학을 연구하고 있다. 한빛미디어에서 『Head First Java』, 『Programming Challenges: 알고리즘 트레이닝 북』, 『프로그래머로 사는 법』, 『슬라이드올로지』를 비롯한 여러 권의 책을 번역했다.

1장. 시작하면서
로봇 심사위원에 대하여  
1. Programming-Challenges.com 로봇 심사위원  
2. 바야돌리드 대학교 로봇 심사위원  
3. 심사위원의 평가 방법  
무기 선택  
1. 프로그래밍 언어  
2. 프로그램을 읽는 방법  
3. 표준 입력, 표준 출력  
프로그래밍 관련 힌트  
기본 데이터 형식  
문제에 대해  
문제 1. 3n+1 문제(The 3n+1 Problem)  
문제 2. 지뢰 찾기(Minesweeper)  
문제 3. 여행(The Trip)  
문제 4. LCD 디스플레이(LCD Display)  
문제 5. 그래픽 편집기(Graphical Editor)  
문제 6. 인터프리터(Interpreter)  
문제 7. 체크 확인(Check the Check)  
문제 8. 호주식 투표법(Australian Voting)  
실마리  
참고  
 
2장. 자료 구조
기본 자료 구조  
1. 스택  
2. 큐  
3. 사전  
4. 우선 순위 큐  
5. 집합  
객체 라이브러리  
1. C++ 표준 템플릿 라이브러리  
2. 자바의 java.util 패키지  
프로그램 설계 예제: 전쟁 게임  
카드 표현법  
문자열 입출력  
전쟁에 이기는 조건  
테스트 및 디버깅  
문제 9. 유쾌한 점퍼(Jolly Jumpers)  
문제 10. 포커 패(Poker Hands)  
문제 11. 동맹 휴업(Hartal)  
문제 12. 암호 깨기(Crypt Kicker)  
문제 13. 쌓아 올리기(Stack 'em Up)  
문제 14. 에르되시 수(Erd?s Numbers)  
문제 15. 경시 대회 점수판(Contest Scoreboard)  
문제 16. 야찌(Yahtzee)  
실마리  
참고  
 
3장. 문자열
문자 코드  
문자열을 표현하는 방법  
프로그램 설계 예제: 회사명 변경  
패턴 검색  
문자열 조작  
회사명 변경 프로그램  
문자열 라이브러리 함수  
문제 17. WERTYU  
문제 18. 월도르프를 찾아라(Where's Waldorf?)  
문제 19. 공통된 변경 문자열(Common Permutation)  
문제 20. 암호 깨기 II(Crypt Kicker II)  
문제 21. 자동 심사 스크립트(Automated Judge Script)  
문제 22. 파일 조각(File Fragmentation)
문제 23. 더블릿(Doublets)  
문제 24. Fmt  
실마리 
참고 
 
4장. 정렬
정렬 응용 방법  
정렬 알고리즘  
프로그램 설계 예제: 필드 순위 매기기  
정렬 라이브러리 함수 
필드 순위 매기기 
문제 25. 비토와 친척들(Vito's Family)  
문제 26. 팬 케이크(Stacks of Flapjacks)  
문제 27. 다리(Bridge)  
문제 28. 낮잠 오래 자기(Longest Nap)  
문제 29. 구두 수선공 문제(Shoemaker's Problem)  
문제 30. CDVII  
문제 31. 셸 정렬(ShellSort)  
문제 32. 축구(Football(aka Soccer))  
실마리  
참고  
 
5장. 계산과 대수
기계 계산  
1. 정수 라이브러리  
고정도 정수  
고정도 계산법  
진법  
실수  
1. 실수 처리법  
2. 분수  
3. 소수점  
대수  
1. 다항식 처리법  
2. 근을 구하는 방법  
로그  
실수 관련 수학 라이브러리  
문제 33. 자리 올림(Primary Arithmetic)  
문제 34. 뒤집어서 더하기(Reverse and Add)  
문제 35. 고고학자의 딜레마(The Archeologist's Dilemma)  
문제 36. 1의 개수(Ones)  
문제 37. 곱하기 게임(A Multiplication Game)  
문제 38. 다항식의 계수(Polynomial Coefficients)  
문제 39. 스턴-브로콧 수체계(The Stern-Brocot Number System)  
문제 40. 모든 쌍의 합(Pairsumonious Numbers)  
실마리  
참고  
 
6장. 조합론
기초적인 셈 기법 
점화관계  
이항계수  
다른 셈 수열  
재귀호출과 귀납법  
문제 41. 피보나치 수의 개수(How many Fibs?)  
문제 42. 땅 나누기(How Many Pieces of Land?)  
문제 43. 셈(Counting)  
문제 44. 표현식(Expressions)  
문제 45. 완전 트리 레이블링(Complete Tree Labeling)  
문제 46. 수도사 수학자(The Priest Mathematician)  
문제 47. 자기기술 수열(Self-describing Sequence)  
문제 48. 단계(Steps)  
실마리  
참고  
 
7장. 정수론
소수  
1. 소수 찾기  
2. 소수의 개수  
나눗셈  
1. 최대공약수  
2. 최소공배수  
모듈러 계산  
합동  
1. 합동에 관한 연산  
2. 일차합동의 해  
3. 디오판토스 방정식  
정수론 라이브러리  
문제 49. 빛, 더 많은 빛(Light, More Light)  
문제 50. 카마이클 수(Carmichael Numbers)  
문제 51. 유클리드 문제(Euclid Problem)  
문제 52. 팩토리얼 나누기(Factovisors)  
문제 53. 소수 네 개의 합(Summation of Four Primes)  
문제 54. 스미스 수(Smith Numbers)  
문제 55. 유리 구슬(Marbles)  
문제 56. 재포장(Repackaging)  
실마리  
참고  
 
8장. 백트래킹
백트래킹이란  
모든 부분집합 구하기  
모든 순열 구하기  
프로그램 설계 예제: 여덟 개의 퀸 문제  
검색 가지치기  
문제 57. 작은 비숍(Little Bishops)  
문제 58. 15-퍼즐 문제(15-Puzzle Problem)  
문제 59. 줄(Queue)  
문제 60. 서비스 센터(Servicing Stations)  
문제 61. 줄다리기(Tug of War)  
문제 62. 에덴동산(Garden of Eden)  
문제 63. 컬러 해시(Color Hash)  
문제 64. 더 큰 사각형(Bigger Square Please)  
실마리  
참고  
 
9장 그래프 순회
그래프의 종류  
그래프 관련 자료 구조  
그래프 순회: 너비 우선 순회  
1. 너비 우선 검색  
2. 순회 점검  
3. 경로를 찾는 방법  
그래프 순회: 깊이 우선 순회  
1. 사이클을 찾는 방법  
2. 연결 성분  
위상 정렬  
문제 65. 두 색으로 칠하기(Bicoloring)  
문제 66. 원판 돌리기(Playing With Wheels)  
문제 67. 여행자 가이드(The Tourist Guide)  
문제 68. 슬래시 미로(Slash Maze)  
문제 69. 편집 단계 사다리(Edit Step Ladders)  
문제 70. 정육면체 탑(Tower of Cubes)  
문제 71. 황혼에서 새벽까지(From Dusk Till Dawn)  
문제 72. 하노이의 탑 문제 다시 보기(Hanoi Tower Troubles Again!)  
실마리  
 
10장. 그래프 알고리즘
그래프 이론  
1. 차수 속성  
2. 연결성  
3. 그래프의 사이클  
4. 평면 그래프  
최소 신장 트리  
최단 경로  
1. 다익스트라 알고리즘  
2. 전쌍 최단 경로  
네트워크 흐름과 이분 매칭  
문제 73. 주근깨(Freckles)  
문제 74. 목걸이(The Necklace)  
문제 75. 소방서(Fire Station)  
문제 76. 철로(Railroads)  
문제 77. 전쟁(War)  
문제 78. 여행자 가이드(Tourist Guide)  
문제 79. 대만찬(The Grand Dinner)  
문제 80. 문제 출제 문제(The Problem With the Problem Setter)  
실마리  
 
11장. 동적 프로그래밍
탐욕 알고리즘은 그만  
편집 거리  
경로 재구성  
편집 거리 응용  
프로그램 설계 예제: 엘리베이터 최적화  
문제 81. 큰 것이 똑똑하다?(Is Bigger Smarter?)  
문제 82. 서로 다른 부분열(Distinct Subsequences)  
문제 83. 거북이 쌓기(Weights and Measures)  
문제 84. 단방향 TSP(Unidirectional TSP)  
문제 85. 막대 자르기(Cutting Sticks)  
문제 86. 페리 탑승(Ferry Loading)  
문제 87. 젓가락(Chopsticks)  
문제 88. 여행: 제4부(Adventures in Moving: Part IV)  
실마리  
참고  
 
12장. 격자
수직 격자  
1. 순회  
2. 쌍대 그래프와 표현법  
삼각, 육각 격자  
1. 삼각 격자  
2. 육각 격자  
프로그램 설계 예: 접시 무게  
원 포장법  
경도와 위도  
문제 89. 체스판 위의 개미(Ant on a Chessboard)  
문제 90. 외발자전거(Monocycle)  
문제 91. 별(Star)  
문제 92. 꿀벌 마야(Bee Maja)  
문제 93. 강도(Robbery)  
문제 94. 2, 3, 4차원 정사각형/직사각형/정육면체/육면체((2/3/4)-D Sqr/Rects/Cubes/Boxes?)  
문제 95. 더뮤바 삼각지대(Dermuba Triangle)  
문제 96. 항공노선(Airlines)  
실마리  
 
13장. 기하
직선  
삼각형과 삼각함수  
1. 직각삼각형과 피타고라스 정리  
2. 삼각함수  
3. 삼각형 풀기  
원  
프로그램 설계 예제: 총알보다 빠르게  
삼각함수 라이브러리  
문제 97. 개와 땅다람쥐(Dog and Gopher)  
문제 98. 밧줄나라의 밧줄 파동(Rope Crisis in Ropeland!)  
문제 99. 원탁의 기사(The Knights of the Round Table)  
문제 100. 초코칩 쿠키(Chocolate Chip Cookies)  
문제 101. 생일 케이크(Birthday Cake)  
문제 102. 최대/최소 상자(The Largest/Smallest Box)  
문제 103. 적분?(Is This Integration?)  
문제 104. 얼마나 클까?(How Big Is It?)  
실마리  
 
14장. 계산기하
선분과 교차  
다각형과 각도 계산  
최소 볼록 집합  
삼각형으로 쪼개기: 알고리즘 및 관련 문제  
1. 반 고흐 알고리즘  
2. 넓이 계산  
3. 점의 위치  
격자 관련 알고리즘  
1. 범위 질의  
2. 격자 다각형 및 픽의 정리  
기하 라이브러리  
문제 105. 신입생 관리(Herding Frosh)  
문제 106. 가장 가까운 두 지점(The Closest Pair Problem)  
문제 107. 전기톱 학살사건(Chainsaw Massacre)  
문제 108. 뜨겁워 차갑워 게임(Hotter Colder)  
문제 109. Useless Tile Packers  
문제 110. 레이더 추적(Radar Tracking)  
문제 111. 섬과 나무(Trees on My Island)  
문제 112. 우유(Nice Milk)  
실마리  
 
부록
ACM 국제 대학생 프로그래밍 경시대회
1. 준비 방법
2. 전략과 전술
국제 정보 올림피아드
1. 참가 방법
2. 형식
3. 준비 방법
탑코더 경시 대회
대학원
문제 출제자 명단
 
참고문헌
해답편
찾아보기

누가 좀 알려주세요....ㅠ,.ㅠ



일반적인 업무 프로그램들을 짜면서 알고리즘이란 분야는 그다지 많이 쓰이지는

않는다.

그러나 프로그래밍이란 작업이 실세계의 객체들을 모델링 한다는 점과 문제해결을

위해 만들어진다는 점에서 알고리즘은 액기스이며 그 중심축에 서있다고 말할 수

있을 것이다.



한빛미디어에서 출간한 Programming Challenges 는 마치 퀴즈를 풀듯이

여러가지 문제상황들을 제시하며 흥미를 가지고 그 문제 풀이를 해가면서 자연스레

프로그래머로서의 스킬을 업 시킬 수 있다는 점에서 좋은 책이다.



(알고리즘 관련 문제들이 올라와 있는 싸이트에서 로봇심사관에게 즉시 자신이

작성한 코드가 맞는지를 검증받을 수 있다는 점도 이 책이 갖는 장점이다.)



선정된 문제들이 흥미를 불러일으키기에 부족함이 없으며, 문제를 풀어감에 있어서

꽤 여러가지 방식의 자료구조와 알고리즘의 스킬을 숙련시키기에 부족함이 없다.



프로그래밍의 입문서는 아니지만, 기본적으로 언어를 마스터 한 상태에서 특별히

지향점이 없이 흥미를 느끼지 못하는 많은 프로그래머들에게 흥미를 줄 수 있을

것이다.





Programming Challenges...



제목이 그 책을 가장 잘 말해주는 책이 있습니다. 이 책.. 알고리즘 트레이닝 북이 그런 책중의 하나라고 생각됩니다. 도전이라는 것, 그건 어떤 순간에는 사람을 참 좌절하게 만들기도 하고 또 어떤 날에는 환희를 안겨주기도 합니다. 프로그래머는 이런 도전을 먹고 사는 직업이 아닐까 생각됩니다.

모든 일들이 그렇겠지만, 프로그래머는 자신과의 고독한 싸움을 하는 경우가 많습니다. 대형 프로젝트에서 팀단위로 움직인다고 하더라도, 결국 프로젝트에서 자신이 맡은 부분을 성공시키는 열쇠는 자신과의 싸움을 얼마만큼 성공적으로 치뤄낼 수 있는가에 달려 있다는 생각을 늘 합니다. 자신과의 싸움 중에서도 구현을 위해 알고리즘을 상상해내고, 그것을 실제로 구현해가면서 만나는 난제들을 해결하는 의지, 그것이지요.



예전에 알던 한 권투선수는 이런 말을 간혹 했습니다. 시합을 수도 없이 치루었지만, 사각의 링, 그 위에 올라가는 순간에는 언제나 변함없이 떨린다고, 공포 비슷한 그 감정에 몸이 경련하는 것을 느끼는 것은 처음이나 나중이나 변함이 없다는 말을 했습니다. 그러면서 또 하는 말이, 시합의 긴장감과 두려움, 상대와의 싸움에서 어떻게 풀어 나갈 것인가 하는 것들을 걱정하면서도 한가지 믿는 것은 평소 스스로를 단련 시켜왔던 노력들이 틀림없이 성과를 보여줄 것이라는 믿음, 그 믿음 하나가 시합 내내 자신을 지탱해주는 힘이 된다고 하더군요.



프로그래머라는 직종도 크게 다르지 않다고 생각됩니다. 평소 늘 하던 일을 하는 이른바 땜질 유닛이 아닌 이상, 아니 땜질 유닛으로 지금은 활동하고 있다 하더라도, 언젠가 큰 일을 해내기 위해서, 그리고 나의 역량을 최대한을 발휘하기 위해서 평소에 끊임없는 노력과 도전을 해보는 것이 필요할 것 같습니다. 실제 돈이 오고가는 프로젝트를 수행한다면 그것보다 더 좋은 수행은 없겠지만, 그런 행운은 모두에게 늘 오는 것은 아니라고 생각합니다.



그래서 저는 간혹 책을 보곤 합니다. 특히 이런 도전에 관한 책들은 되도록 쉬지 않고 보려고 합니다. 이 책은 그런 저의 생각에 딱 맞는 책인것 같습니다. 그리 감각이 뛰어나지 못한 편이라, 어느 문제 하나 쉬운 것이 없었습니다. 절반도 보지 못하였지만, 쉽게 넘어간 문제가 하나도 없다는 것이 좀 아쉽다는 생각까지 들고 있습니다. 그러면서도 어느 문제 하나도 즐겁지 않은 것 또한 없었습니다. 이런 난제를 이런 방법으로 풀어나갔구나 하는 것을 알게 될때 느끼는 환희는, 어느 소설, 어느 명문의 행간에 견주어도 손색이 없는 지식의 즐거움을 안겨주기 충분한 것 같습니다.



우리는 늘 일상에서 도전을 하면 살고 있습니다. 기획과 영업쪽에서 어려운 프로젝트를 안고 왔을때 겉으로는 짜증과 탄식을 보이기도 하지만, 내심으로는.. 이번에는 어떤 과제를 또 어떤 방식으로 풀어내려갈 수 있을까 하는 두려움과 해낼 수 있을 것이라는 자신감, 그리고 두근거림을 주체하지 못하는 것은 저만의 경험은 아닐거라 생각합니다. 그리고 그 문제들을 해결해낸 어느날 새벽의 만족감은.. 열심히 그 일에 매진한 사람만이 가질 수 있는 행복이라 생각합니다.



그런 행복한 결말을 위해서, 평소 조금만 수련을 해둔다면 큰 도움이 될 수 있을 거라 생각하면서 이 책을 다른 많은 분들에게 권해드립니다. 쉽지 않은 도전과제들이 있고, 책의 뒤쪽에는 해답이 달려 있습니다만, 정말 즐겁게 도전해볼 수 있는 분들이라면, 그 해답을 건드리지 않고 끝까지 풀어나가 보세요. 그 위에 얻는 만족감이 훨씬 더 클 거라 생각됩니다. 저는.. 성격이 급해서 좀 차분하게 문제를 풀지 못하고 해답을 넘겨본 일들이 있었는데요...



아! 라는 탄식과 함께 작은 즐거움 하나를 놓친것 같은 아쉬움이 많이 밀려오더군요..^^..



발췌: 강컴서평, 채동균님

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

배송료 안내

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

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

닫기

리뷰쓰기

닫기
* 도서명 :
Programming Challenges: 알고리즘 트레이닝 북
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

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

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

오탈자 등록

닫기
* 도서명 :
Programming Challenges: 알고리즘 트레이닝 북
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
Programming Challenges: 알고리즘 트레이닝 북
구입처*
구입일*
부가기호*
부가기호 안내

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

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

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

닫기

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

자료실