책 소개
핵심 개념과 실전 문제로 마스터하는 필수 알고리즘 with 파이썬
이 책은 핵심 개념과 실전 문제 2개의 파트로 나눠서 알고리즘의 모든 것을 배울 수 있는 도서입니다.
핵심 개념 파트에서는 파이썬의 기본적인 문법과 사용 방법, 그리고 필수 알고리즘의 특성에 대해 설명합니다. 다른 프로그래밍 언어보다 간결하고 쉬운 파이썬을 이용하여 복잡한 프로그래밍을 하기 전의 기본적인 자료구조와 다양한 기본 알고리즘에 대해 핵심 개념을 배워봅니다.
실전 문제 파트에서는 핵심 개념 파트에서 배운 알고리즘을 응용하여 총 43개의 실전 문제를 풀어봅니다. 실전 문제는 C나 Java와 같은 프로그래밍 언어들의 프로그래밍 실력을 평가하기 위해 사용되었던 필수 문제들로 구성하였습니다.
기본적인 알고리즘 패턴에 맞게 난이도 낮은 기초적인 문제부터 난이도 높은 심화 문제들까지 다양하게 배웁니다. 실전 문제를 풀이하면서 문제와 정답만 알려주는 것이 아닌 직접 알고리즘을 이해하고 해결할 수 있도록 접근 방법, 힌트, 실수 포인트, 전체 코드 해설을 함께 설명합니다.
작가 소개
10여 년 전에 미국 동부의 Turf 대학에서 전산 전공으로 석사 학위를 수료했고, 보스턴의 스타트업 기업들에서 마이크로서비스 기반 웹 서비스 개발을 주로 했다.
동부의 추운 날씨가 싫어 캘리포니아의 산호세의 유니콘 기업에서 시니어 개발자로 일하고 있다. 이제 막 초보 딱지를 뗀 서핑이 취미이며, 주말에 키우는 강아지들과 산책하는 것을 즐기며 사는 노는 것을 좋아하는 개발자이다. 주로 마이크로서비스 기반의 시스템을 좋아하며, Confluence와 jira, Github을 이용한 협업을 즐긴다.
목 차
<핵심 개념>
CHAPTER 1 파이썬 프로그래밍을 위한 개발 환경 만들기
CHAPTER 2 알고리즘 정의와 분석 방법
CHAPTER 3 연결 리스트
CHAPTER 4 이중 연결 리스트
CHAPTER 5 스택(Stack)과 큐(Queue)
CHAPTER 6 트리(Tree)
CHAPTER 7 트리(Tree)의 순회(Traverse) 알고리즘
CHAPTER 8 선택/삽입 정렬 알고리즘
CHAPTER 9 거품/셸 정렬 알고리즘
CHAPTER 10 퀵/기수 정렬 알고리즘
CHAPTER 11 병합/힙 정렬 알고리즘
CHAPTER 12 이진 검색 알고리즘
<실전 문제>
001. 반복문을 사용하여 0부터 n까지의 합 출력하기
002. 재귀 호출을 사용하여 1부터 20까지 출력하기
003. 반복문을 사용하여 1부터 n까지 출력하기
004. 재귀 호출을 사용하여 n부터 1까지 출력하기
005. 3과 5의 배수 계산하기
006. 숫자 뒤집기
007. 369 게임 만들기
008. 자연수 n이 소수인지 아닌지를 출력하기
009. 2 ~ N 사이의 모든 소수를 추출하기
010. 약수 구하기
011. 소수 구하기(에라토스테네스의 체)
012. 약수의 합 출력하기
013. 반복문을 사용하여 최대공약수 구하기
014. 재귀 호출을 사용하여 최대공약수 구하기
015. 소인수분해 구하기
016. 최소공배수 구하기
017. 배열 채우기(1)
018. 배열 채우기(2)
019. 반복문을 사용하여 조합(nCr) 구하기
020. 재귀호출을 사용하여 조합(nCr) 구하기
021. 최적화한 조합
022. 대리석 채우기
023. 두 숫자간의 차이 구하기
024. 점수 분포 출력하기
025. 등수 구하기
026. 배열을 사용하여 16진수 변환하기
027. 반복문을 사용하여 팩토리얼 출력하기
028. 재귀 호출을 사용하여 팩토리얼 출력하기
029. 하노이의 탑
030. 이진 트리에서 두 노드사이의 거리 구하기
031. 제곱근 구하기
032. 알파벳 순서대로 하나씩 줄여가며 출력하기(반복문 사용)
033. 알파벳 순서대로 하나씩 줄여가며 출력하기(재귀 호출 사용)
034. 3×3 행렬 중 합이 최소가 되는 항목 선택하기
035. 회문(palindrome) 확인하기
036. 만들 수 있는 삼각형의 개수 구하기(재귀 호출 사용)
037. 파스칼의 삼각형
038. 유클리드 호제법을 사용하여 최대공약수 구하기
039. 반복문을 사용하여 피보나치 수열
040. 재귀 호출을 사용하여 피보나치 수 구하기
041. 동적계획법을 사용하여 피보나치 수 구하기
042. 동적계획법을 사용하여 1부터 N까지의 합 구하기(재귀 호출 사용)
043. 반복문(상향식 설계)을 사용하여 1부터 N까지의 합 구하기
역자 소개
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |