목차
지은이의 글
책을 읽기 전에
00 시작하기
0.1 최대와 최소
0.2 두 변수의 값 바꾸기
0.3 배열 회전
0.4 은행 대기번호 관리
0.5 연결리스트
0.6 추가 문제
0.7 일부 풀이
01 재귀적 프로그래밍
1.1 팩토리얼 계산하기
1.2 연결리스트 출력하기
1.3 이항계수
1.4 피보나치 수열
1.5 금액 맞추기
1.6 수분할
1.7 그레이 코드
1.8 추가 문제
1.9 일부 풀이
02 동적 프로그래밍
2.1 출근길
2.2 출근길 2
2.3 출근길은 즐거워
2.4 부분집합의 합
2.5 최대 이익 투자
2.6 최대 연속부분수열의 합
2.7 추가 문제
2.8 일부 풀이
03 나열하기
3.1 경우의 수
3.2 부분집합
3.3 도둑의 고민
3.4 조합과 중복조합
3.5 연회장 나누기
3.6 중복순열
3.7 순열
3.8 모든 괄호쌍
3.9 추가 문제
3.10 일부 풀이
04 퍼즐
4.1 체스판 덮기
4.2 복면산
4.3 자기 자신을 나타내는 수열
4.4 아인슈타인 퍼즐
4.5 8퍼즐
4.6 추가 문제
4.7 일부 풀이
05 게임
5.1 동전 놓기
5.2 동전 가져가기
5.3 이길 수 있을까
5.4 님 게임 분석
5.5 케일즈
5.6 합리적인 선택
5.7 추가 문제
5.8 일부 풀이
06 정렬과 비교
6.1 토너먼트
6.2 최소 횟수 비교
6.3 삽입 정렬
6.4 퀵 정렬
6.5 퀵 정렬 개선
6.6 과반수 원소
6.7 더욱 빠르게 정렬하기
6.8 탐색
6.9 추가 문제
6.10 일부 풀이
07 계산하기
7.1 행렬 계산
7.2 거듭제곱
7.3 분수
7.4 부동 소수점 계산의 오차
7.5 십진수 연산 라이브러리
7.6 제곱근 구하기
7.7 추가 문제
7.8 일부 풀이
08 확률
8.1 편지 배달
8.2 한가한 서버 찾기
8.3 랜덤 함수
8.4 가중치가 있는 랜덤 함수
8.5 기대 값 시뮬레이션
8.6 몬티홀
출판사 서평
알고리즘, 배울 것인가? 외울 것인가?
알고리즘은 원래 문제를 푸는 과정에서 만들어졌기 때문에, 배울 때도 문제를 풀어보며 접근하는 편이 훨씬 수월하다.
이 책에서는 알고리즘 자체를 먼저 설명하기보다 문제를 제시하고 이를 해결하면서 독자 스스로 알고리즘을 떠올리게 해준다. 네 단계의 난이도로 차별된 문제들을 보며, 입문자들은 쉬운 문제부터 어려운 문제까지 순차적으로 진행할 수 있고, 숙련자라면 자신의 수준에 어울리는 문제들만 취사선택할 수도 있다.
그간 알고리즘이란 어렵다고만 느꼈다면, 이 책을 통해 쉬운 문제부터 풀어보며...
알고리즘, 배울 것인가? 외울 것인가?
알고리즘은 원래 문제를 푸는 과정에서 만들어졌기 때문에, 배울 때도 문제를 풀어보며 접근하는 편이 훨씬 수월하다.
이 책에서는 알고리즘 자체를 먼저 설명하기보다 문제를 제시하고 이를 해결하면서 독자 스스로 알고리즘을 떠올리게 해준다. 네 단계의 난이도로 차별된 문제들을 보며, 입문자들은 쉬운 문제부터 어려운 문제까지 순차적으로 진행할 수 있고, 숙련자라면 자신의 수준에 어울리는 문제들만 취사선택할 수도 있다.
그간 알고리즘이란 어렵다고만 느꼈다면, 이 책을 통해 쉬운 문제부터 풀어보며 차근차근 정복해보자.
Q. 어떤 책인가?
A. 이 책은 프로그래밍에 필요한 아이디어를 묻고 답하는 형식으로 다룬다. 문제를 설명하고, 독자와 함께 답을 찾고, 답이 맞는지 생각해본다. 어떤 방법이 옳은지, 더 좋은 방법은 없는지 생각하는 습관을 갖도록 하는 것이 이 책의 목적이다.
이 책의 상당 부분은 알고리즘 교과서에 나오는 주제들을 다룬다. 하지만, 엄밀하고 복잡한 식부터 보여주며 시작하는 교과서들과는 달리, 이 책은 구체적이고 쉬운 예부터 시작하여 조금씩 어려운 예들을 다루면서 독자 스스로 알고리즘의 효율성과 정확성을 이해하고 허점을 찾을 수 있게 돕는다.
Q. 다른 책과의 차이점은 무엇인가?
A. 일반적인 알고리즘 책은 문제를 먼저 정의하고 복잡한 식으로 구성된 해법을 보여