제목 없음
논리적 사고를 기르는 알고리즘수업
- 저자 롤랜드 백하우스<*>인사이트<*>발행일 2024-01-31
책소개
코딩 테스트보다 먼저 준비해야 할 알고리즘 문제 해결 기본기
알고리즘 문제
해결 능력은 프로그래머가 갖춰야 할 필수 역량이다. 이를 기르기 위해서는 잘 알려진 알고리즘과 자주 출제되는 문제 풀이를 익히는 것도 좋지만, 좀 더 근본적으로는 문제가 주어졌을 때 공식화하고 알고리즘으로 표현하는 논리적 사고 방식을 기르는 것이 중요하다.
이 책의 목표는 좋은 문제 해결 기술을 심어 주는 것이다. 전반부는 알고리즘 문제 해결의 원칙을 체계적으로 소개하는 여러 가지 예제로 구성되어 있다. 문제 중심으로 접근하여 자연스럽게 독자들의 도전 성향을 자극한다. 불변량, 귀납법, 대칭성 등 알고리즘 설계의 핵심 원칙은 앞으로 맞닥뜨릴 어떤 문제에든 접근할 수 있는 무기가 된다. 후반부에서는 원칙을 뒷받침하는 수학 지식을 다뤄 예제 이해에 필요한 이론을 제공한다. 알고리즘 문제를 좀 더 효과적으로 푸는 데 딱 필요한 만큼의 수학적 배경지식을 정리할 수
있다.
이 책에서 다루는 문제는 익히 잘 알려진 ‘재미 삼아 푸는 수학 문제’이다. 문제의 답을 찾는 것은 쉽지만 특정한 종류의 문제를 모두 해결할 수 있는 알고리즘을 표현하는 일은 연습이 필요하다. 각종 문제의 알고리즘을 설계하는
연습을 통해 문제 해결에 필요한 논리적 사고와 알고리즘적 접근법을 자연스럽게 익힐 수 있다.
목차
1부 알고리즘 문제 해결
1장 들어가며
2장 불변량
3장 강 건너기
4장 게임
5장 기사와 건달
6장 귀납법
7장 가짜 동전 찾기
8장 하노이의 탑
9장 알고리즘 설계의 원칙
10장 다리 건너기 문제
11장 기사의 순회
2부 수학적 기법
12장 수학의 언어
13장 불리언 대수
14장 한정 기호
15장 정수론의 요소들
16장 관계, 그래프, 경로 대수
저자소개
저자 : 롤랜드 백하우스 (Roland C. Backhouse)
노팅엄 대학교의 컴퓨터과학 교수. 저서로는
《Program Construction: Calculating Implementations from Specifications(프로그램 설계: 명세에서 구현 계산하기)》가 있다.
역자 : 김준원
서울대학교 자유전공학부에서 컴퓨터공학을 전공하고 있다. 2019년 ACM-ICPC 대회에서 은상을 받았다. 국제정보올림피아드 계절학교 코치, 삼성전자 사내 교육 등 알고리즘 교육 활동을 해 왔으며, KOI, NYPC 등 대회의 출제, 검수 과정에도 지속적으로 참여하고 있다.
역자 : 윤교준
서울대학교에서 컴퓨터공학 및 수리과학을 전공하는 학부생으로, 음악과 그림에 열정을 가지고 있다. 국제정보올림피아드 코치로 활동했고, 세계 대학생 프로그래밍 경진대회에서 금메달을 수상했으며, 코딩 및 알고리즘 교육에 깊은 관심을 갖고 있다. 현재는 코드트리에서 Contents Innovator로
근무하며, 모든 사람이 코딩을 즐길 수 있는 세상을 만들고자 한다.
출판사서평
프로그래밍 잘하는 법: 컴퓨터에게 일을 잘 시킨다
컴퓨터에게 일을 잘 시키기 위해 필요한
것은?
프로그래밍을 잘하려면 어떤 능력이 필요할까? 수학을 잘하면 프로그래밍도 잘할까? 둘 사이에 상관관계가 없진 않으나, 막연히 수학을 잘한다고 해서 프로그래밍을 잘한다고 할 수는 없다. 프로그래밍은 인간보다 계산을 더 잘 수행하는
컴퓨터에 일련의 명령을 내리는 작업인데, 이는 수학적 지식이 많거나 문제를 잘 푸는 것과 조금 다르기 때문이다. 인간은 알고리즘을 실행하는 데 꽤 능하지만 자주 실수하는 반면, 컴퓨터는 알고리즘이 엄밀하게 잘 정의되어 있다면 인간보다 더 잘 실행한다. 하지만 컴퓨터는 알고리즘을 스스로 표현해 낼 능력이 없기 때문에 창의적인 인간의 알고리즘 표현 능력에 의존할 수밖에 없다. 여기서 프로그래머가 발휘할 수 있는 능력은 ‘알고리즘을 잘 표현하는 능력’이다.
문제는 많이 풀어 봤지만, 조금만 달라져도 막막하다면?
코드 없이 배우는 알고리즘 설계의 기본 원리
이 책은 다른 알고리즘 책과 조금 다르다. 잘 알려진 알고리즘이나 문제 풀이 방법론을 구체적으로 알려 주지 않는다. 프로그래밍 언어로 작성된 코드가 단 한 줄도 등장하지 않는다. 오로지 불변량, 귀납법, 대칭성의 활용 등 문제를 해결하기 위한 알고리즘을 표현하고 공식화하는 사고 방식을 강조할
뿐이다. 문제는 많이 풀어봤지만 조금 다른 문제를 보면 어떻게 접근해야 할지 막막할 때가 있다. 특정 유형의 풀이는 알고 있지만, 알고리즘 문제 해결을 관통하는 원칙을 알지 못하는 것이다. 이 책을 통해 어떻게 문제를 분석하고, 수학적으로 모델링하는지, 어떻게 알고리즘적 해답을 도출해 내는지, 차근차근 따라가다 보면 어느샌가 알고리즘 이론에 체계적으로 입문할 수 있으며, 어떤 문제를 맞닥뜨리더라도 방법을 찾을 수 있을 것이다.