가장 쉬운 독학 알고리즘 첫걸음: 파이썬편 (코딩 테스트에 대비하는 25가지 기초 알고리즘과 최적화)

가장 쉬운 독학 알고리즘 첫걸음: 파이썬편 (코딩 테스트에 대비하는 25가지 기초 알고리즘과 최적화)

$23.50
Description
파이썬 알고리즘의 기초와 시간 복잡도 기반의 최적화 요령까지 배운다!
이 책은 25가지 알고리즘을 통해 파이썬 프로그래밍 입문을 막 끝낸 사람이 기초 알고리즘 학습에 어떻게 접근해야 하는지 알려줍니다. 또한 파이썬 프로그래밍을 공부한 지 오래된 사람을 위해 파이썬 프로그래밍과 자료구조의 기초를 복습할 수 있도록 도와줍니다.

코딩 테스트나 기술 면접에 대비해 알고리즘을 배운다면 코드의 처리 성능을 나타내는 시간 복잡도까지 알 필요가 있습니다. 시간 복잡도는 기술 면접의 단골 질문이며, 똑같이 문제를 해결했더라도 시간 복잡도를 고려해 코드를 작성한 사람이 좋은 개발자로 성장할 가능성이 크다고 평가하기 때문입니다. 따라서 처리 성능이 좋은 알고리즘 코드를 작성할 때 시간 복잡도의 개념을 어떻게 활용하는지 소개해 기술 면접이나 코딩 테스트를 준비하는 사람에게도 도움이 되도록 합니다.
저자

박광수(아크몬드)

박광수라는이름보다‘아크몬드’라는필명으로더잘알려진블로거입니다.2004년부터지금까지최신윈도우정보를꾸준히나누고있습니다.지금까지7회마이크로소프트MVP(Windows부문)를수상하기도했습니다.마이크로소프트365,애저(Azure)등마이크로소프트의최신기술에열광합니다.심리학에관심이많으며현재일본에서개발자로일하면서딥러닝에많은관심을두고있습니다.

지은책으로는『윈도우10마스터북』,옮긴책으로는『만들면서배우는파이토치딥러닝』,『파이썬으로배우는딥러닝교과서』,『파이썬으로배우는머신러닝의교과서』,『처음배우는딥러닝수학』(이상한빛미디어),『가장쉬운독학알고리즘첫걸음:C&자바편』,『캐글가이드』(이상동양북스)등이있습니다.

목차

1장파이썬의기본및자료구조알아보기
1.1프로그래밍언어선택
1.1.1목적에따라프로그래밍언어선택하기
1.1.2파이썬을선택하는이유
1.1.3프로그램실행방식의차이알아보기
1.2파이썬개요
1.2.1파이썬의특징
1.2.2파이썬실행하기
1.2.3대화형모드로파이썬사용
1.2.4스크립트파일로저장
1.2.5문자인코딩에주의하기
1.2.6주석
1.3사칙연산과우선순위
1.3.1파이썬의기본계산
1.3.2소수계산
1.3.3자료형확인
1.4변수,대입,리스트,튜플
1.4.1변수
1.4.2대입
1.4.3리스트
1.4.4튜플
1.5문자와문자열
1.5.1문자와문자열다루기
1.5.2문자열연결
1.6조건분기와반복
1.6.1조건분기
1.6.2긴줄의작성방법
1.6.3반복
1.7리스트내포
1.7.1리스트생성
1.7.2조건을지정해리스트생성
1.8함수와클래스
1.8.1함수작성
1.8.2값에의한전달과참조에의한전달
1.8.3변수의유효범위
1.8.4객체지향과클래스

2장기본적인프로그램작성하기
2.1순서도그리기
2.1.1처리의흐름표현하기
2.1.2자주쓰이는기호배우기
2.1.3간단한순서도그리기
2.2FizzBuzz구현하기
2.2.1코딩테스트에자주나오는문제
2.2.23의배수일때‘Fizz’출력
2.2.35의배수일때‘Buzz’출력
2.2.43과5의공배수일때‘FizzBuzz’출력
2.3자판기에서거스름돈계산하기
2.3.1거스름돈의매수를최소화하려면?
2.3.2거스름돈계산
2.3.3리스트와반복문으로프로그램을간단하게만들기
2.3.4잘못된입력에대응하기
2.4기수변환
2.4.110진수와2진수
2.4.210진수를2진수로변환
2.4.32진수를10진수로변환
2.5소수판정하기
2.5.1소수를구하는방법
2.5.2소수인지알아보는프로그램만들기
2.5.3빠르게소수를구하는방법고려하기
2.6피보나치수열만들기
2.6.1피보나치수열이란?
2.6.2피보나치수열을프로그램으로구하기
2.6.3메모이제이션으로처리속도향상시키기

3장복잡도학습하기
3.1계산비용,실행시간,시간복잡도
3.1.1좋은알고리즘이란?
3.1.2프로그램을작성해처리시간측정하기
3.1.3알고리즘의성능을평가하는복잡도
3.1.4FizzBuzz복잡도알아보기
3.1.5곱셈복잡도알아보기
3.1.6부피를구하는복잡도알아보기
3.1.7복잡도비교하기
3.1.8최악시간복잡도와평균시간복잡도
3.2자료구조에따른복잡도차이
3.2.1연결리스트의개념
3.2.2연결리스트삽입하기
3.2.3연결리스트삭제하기
3.2.4연결리스트읽기
3.2.5리스트와연결리스트의구분
3.3알고리즘복잡도와문제복잡도
3.3.1복잡도클래스
3.3.2지수시간알고리즘
3.3.3계승을계산하는알고리즘
3.3.4어려운P≠NP예상

4장다양한검색방법배우기
4.1선형검색
4.1.1일상에서의검색
4.1.2프로그래밍의검색
4.1.3선형검색함수정의하기
4.2이진검색
4.2.1검색범위를반으로나누기
4.2.2데이터증가시비교횟수고려하기
4.3트리구조탐색
4.3.1계층구조데이터의검색고려하기
4.3.2너비우선탐색구현하기
4.3.3깊이우선탐색구현하기
4.4다양한예제구현하기
4.4.1미로탐험(보초병)문제
4.4.28퀸문제
4.4.3n퀸문제
4.4.4하노이의탑
4.4.5폴더에서다른폴더나파일찾기
4.4.6틱택토

5장데이터정렬에걸리는시간비교하기
5.1일상생활에서의정렬
5.1.1정렬이필요한상황
5.1.2정렬알고리즘을배우는이유
5.2선택정렬
5.2.1작은요소고르기
5.2.2선택정렬의구현
5.2.3선택정렬의복잡도
5.3삽입정렬
5.3.1정렬된리스트에데이터추가하기
5.3.2뒤에서부터데이터이동하기
5.3.3삽입정렬구현하기
5.3.4삽입정렬의복잡도
5.4버블정렬
5.4.1이웃끼리데이터교환하기
5.4.2버블정렬구현하기
5.4.3버블정렬개선하기
5.5힙정렬
5.5.1리스트를효율적으로사용하는자료구조알아보기
5.5.2마지막에넣은데이터부터꺼내는스택
5.5.3스택구현하기
5.5.4처음에넣은데이터부터꺼내는큐
5.5.5큐구현하기
5.5.6트리구조로표현하는힙
5.5.7힙에요소추가하기
5.5.8힙에서요소꺼내기
5.5.9힙의구성에걸리는시간
5.5.10힙정렬구현하기
5.5.11범용적인힙정렬구현하기
5.5.12라이브러리활용
5.6병합정렬
5.6.1리스트를분할한후병합해정렬하기
5.6.2병합정렬구현하기
5.6.3병합정렬의복잡도
5.7퀵정렬
5.7.1분할한각리스트안에서정렬하기
5.7.2퀵정렬구현하기
5.7.3퀵정렬의복잡도
5.8처리속도비교하기
5.8.1복잡도비교하기
5.8.2실제데이터로비교하기
5.8.3안정정렬

6장실무에도움되는알고리즘알아보기
6.1최단경로문제
6.1.1수치화한비용을생각하기
6.1.2모든경로조사하기
6.1.3그래프를만들어생각하기
6.2벨만-포드알고리즘
6.2.1변의가중치에주목하기
6.2.2초깃값으로무한대설정하기
6.2.3비용갱신하기
6.2.4프로그램작성하기
6.2.5벨만-포드알고리즘에서주의할점
6.3데이크스트라알고리즘
6.3.1정점에주목해최단경로찾기
6.3.2데이크스트라알고리즘구현하기
6.3.3복잡도를생각하여처리속도향상하기
6.3.4힙에의한우선순위가있는큐구현하기
6.3.5데이크스트라알고리즘에서주의할점
6.4A*알고리즘
6.4.1불필요한경로를최대한탐색하지않기
6.4.2비용의추정값고려하기
6.4.3A*알고리즘구현하기
6.5완전탐색알고리즘
6.5.1인덱스가없는문자열에서특정문자열찾기
6.5.2일치하는문자위치를앞에서부터찾기
6.5.3완전탐색알고리즘구현하기
6.6보이어-무어알고리즘
6.6.1완전탐색알고리즘의문제점
6.6.2문자열끝부터비교해패턴에포함되지않는문자건너뛰기
6.6.3처리시간비교하기
6.7역폴란드표기법
6.7.1연산자를앞에놓는폴란드표기법
6.7.2연산자를뒤에두는역폴란드표기법
6.8유클리드호제법
6.8.1최대공약수를효율적으로구하기
6.8.2고급알고리즘배우기

부록A파이썬개발환경구축하기
A.1파이썬의처리시스템알아보기
A.2파이썬개발환경설치하기
A.2.1윈도우에설치하는경우
A.2.2macOS에설치하는경우
A.3아나콘다로파이썬설치하기
A.3.1윈도우에설치하는경우
A.3.2macOS에아나콘다설치하기
A.4파이썬가상환경만들기
A.5여러버전의파이썬으로전환하기
A.6패키지설치및삭제
A.7파일이나프로그램을실행할때문제가발생하는경우

부록B이해도Check!정답

출판사 서평

‘복잡도’를중시하는파이썬알고리즘구현기법을배운다!
알고리즘을배우는이유는무엇일까요?현실적인이유로는취업준비가있을것입니다.최근5~6년사이좋은기업의개발자채용과정에는꼭코딩테스트가포함되기때문입니다.그런데알고리즘은취업목적이아니더라도프로그래머의기초체력을기르기위해꼭배워야하는것이기도합니다.수학문제를풀때중요공식을외워서사용하는것과같이알고리즘은여러가지문제를해결하는기반이되는공식과도같은것이기때문입니다.

이책은최근국내에서가장주목받는프로그래밍언어인파이썬을기반으로알고리즘을설명합니다.그런데현재파이썬알고리즘을설명하는책도여러권출간되어있습니다.그런데도이책을선택하면좋은이유는무엇일까요?바로알고리즘을공부하는이유중하나인‘복잡도’를강조한다는점입니다.

여러분이프로그래머로살아가기로마음을먹었다면단순히문법을조합해서원하는결과를내는것만으로만족하면안됩니다.같은결과를내더라도시간이나속도가빠른프로그램을만들수있어야합니다.여기에가장결정적인영향을끼치는것이복잡도입니다.최근코딩테스트의경향도문제해결능력과함께성능을고려한코드를작성했을때평가가좋습니다.이책과함께기본알고리즘코드의학습은물론이고복잡도를고려해성능이좋은코드로개선하는방법도익혀보기를바랍니다.

이책의특징
·파이썬기초와알고리즘의기초를1권으로배울수있습니다.
·예제코드를살펴보기전알고리즘의흐름을이해할수있는순서도를제시해설명합니다.
·각장에서배운내용을다질수있는‘이해도Check!’를제공합니다.
·알고리즘의사용법,사고방식,시간복잡도사이의연관성을이해할수있도록돕습니다.