코딩테스트에 필요한 파이썬 수학 라이브러리
2025년 10월 24일 출간
- eBook 상품 정보
- 파일 정보 PDF (8.52MB) | 288 쪽
- ISBN 9791124025895
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)
쿠폰적용가 8,910원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
코딩테스트 고수들은 우리와 다른 수학 공식을 외우고 있을까요? 아닙니다. 그들은 단지 "어떤 문제에 어떤 도구(라이브러리)를 써야 하는지" 알 뿐입니다.
이 책은 프로그래머스, 백준 등에서 자주 만나는 실전 문제 29가지 유형을 완벽하게 분석하고, 각 문제를 푸는 데 필요한 파이썬 핵심 라이브러리(itertools, collections, math, heapq, bisect 등)를 1:1로 맵핑해 줍니다.
"N개 중 R개 뽑기" 문제가 보이면 → itertools.combinations
"최단 거리" 문제가 보이면 → heapq (다익스트라)
"개수 세기" 문제가 보이면 → collections.Counter
"정렬된 배열에서 탐색" 문제가 보이면 → bisect_left
마치 문제 유형별로 정리된 '치트키'처럼, 이 책을 통해 당신의 문제 해결 속도는 놀랍게 빨라질 것입니다. 비효율적인 for문과 작별하고, 파이썬다운 효율적인 코드로 합격에 가까워지세요.
Part 1: itertools (모든 경우의 수 완전탐색)
Chapter 1. 문제 유형: "N개 중 순서 없이 R개 뽑기" (조합)
1-1. [문제 정의] "서로 다른 N개 중 순서를 고려하지 않고 R개를 뽑는 모든 경우"
1-2. [핵심 함수] itertools.combinations(iterable, r)
1-3. [실전 예제] 프로그래머스: "소수 만들기"
1-4. [풀이 전략] 3개의 숫자를 뽑는 모든 조합을 구해 합을 검사합니다.
Chapter 2. 문제 유형: "N개 중 순서 있게 R개 나열" (순열)
2-1. [문제 정의] "서로 다른 N개 중 R개를 뽑아 순서대로 나열하는 모든 경우"
2-2. [핵심 함수] itertools.permutations(iterable, r)
2-3. [실전 예제] 백준: "N과 M (5)"
2-4. [풀이 전략] N개의 숫자 중 M개를 뽑아 나열하는 모든 순열을 출력합니다.
Chapter 3. 문제 유형: "모든 순서 시도하기" (순열 응용)
3-1. [문제 정의] "주어진 작업들의 순서를 모두 바꿔가며 최적의 해를 찾기"
3-2. [핵심 함수] itertools.permutations(iterable, len(iterable))
3-3. [실전 예제] 프로그래머스: "피로도"
3-4. [풀이 전략] 던전을 탐험하는 모든 순열을 구해, 각 순서마다 최대 탐험 횟수를 갱신합니다.
Chapter 4. 문제 유형: "중복을 허용하여 R개 나열" (중복 순열)
4-1. [문제 정의] "서로 다른 N개 중 중복을 허용하여 R개를 뽑아 나열"
4-2. [핵심 함수] itertools.product(iterable, repeat=r)
4-3. [실전 예제] 백준: "N과 M (3)"
4-4. [풀이 전략] 1~N까지의 수를 repeat=M으로 중복 순열을 만듭니다.
Chapter 5. 문제 유형: "중복을 허용하여 R개 뽑기" (중복 조합)
5-1. [문제 정의] "서로 다른 N개 중 중복을 허용하여 순서 없이 R개를 뽑기"
5-2. [핵심 함수] itertools.combinations_with_replacement(iterable, r)
5-3. [실전 예제] 백준: "N과 M (4)" (비내림차순 수열)
5-4. [풀이 전략] 1~N까지의 수를 중복 조합으로 M개 뽑습니다.
Part 2: collections (자료구조 기반 계산)
Chapter 6. 문제 유형: "요소의 개수 세기" (해시 카운팅)
6-1. [문제 정의] "리스트나 문자열에 각 요소가 몇 개씩 있는지 빠르게 세기"
6-2. [핵심 함수] collections.Counter(iterable)
6-3. [실전 예제] 프로그래머스: "완주하지 못한 선수"
6-4. [풀이 전략] Counter(참가자) - Counter(완주자)로 차집합을 구합니다.
Chapter 7. 문제 유형: "애너그램 (문자열 구성 비교)"
7-1. [문제 정의] "두 문자열이 철자의 순서만 다르고 구성이 같은지 판별"
7-2. [핵심 함수] collections.Counter(str1) == collections.Counter(str2)
7-3. [실전 예제] 백준: "애너그램"
7-4. [풀이 전략] 두 문자열의 Counter 객체가 완전히 동일한지 비교합니다.
Chapter 8. 문제 유형: "최빈값 (가장 많이 나온 값)"
8-1. [문제 정의] "자료에서 가장 빈번하게 등장한 요소를 찾기"
8-2. [핵심 함수] Counter.most_common(k)
8-3. [실전 예제] 백준: "베스트셀러"
8-4. [풀이 전략] most_common(1)로 가장 빈도가 높은 1개를 찾습니다.
Chapter 9. 문제 유형: "최단 거리 탐색 (BFS)"
9-1. [문제 정의] "가중치 없는 그래프(맵)에서 최단 거리를 찾기"
9-2. [핵심 자료구조] collections.deque() (큐로 활용)
9-3. [실전 예제] 프로그래머스: "게임 맵 최단거리"
9-4. [풀이 전략] deque를 큐로 사용하여 BFS를 수행합니다. (Tip: list.pop(0)의 비효율성)
Chapter 10. 문제 유형: "슬라이딩 윈도우"
10-1. [문제 정의] "크기가 K인 창문을 이동시키며 범위 내의 값을 처리"
10-2. [핵심 자료구조] collections.deque() (양쪽에서 삽입/삭제가 빠름)
10-3. [실전 예제] 백준: "최솟값 찾기" (11003번)
10-4. [풀이 전략] deque를 사용해 범위 내의 최솟값 후보를 효율적으로 관리합니다.
Chapter 11. 문제 유형: "스택 (LIFO) 자료구조"
11-1. [문제 정의] "가장 나중에 들어온 데이터를 가장 먼저 처리 (LIFO)"
11-2. [핵심 자료구조] list (.append(), .pop()) 또는 collections.deque()
11-3. [실전 예제] 프로그래머스: "올바른 괄호"
11-4. [풀이 전략] 여는 괄호는 스택에 넣고, 닫는 괄호는 스택에서 빼며 짝을 맞춥니다.
Part 3: math (수치 연산 및 계산)
Chapter 12. 문제 유형: "최대공약수 / 기약분수"
12-1. [문제 정의] "두 수의 공통된 약수 중 가장 큰 값 / 분수를 약분하기"
12-2. [핵심 함수] math.gcd(a, b)
12-3. [실전 예제] 프로그래머스: "분수 덧셈"
12-4. [풀이 전략] 분모/분자를 gcd로 나누어 기약분수를 만듭니다.
Chapter 13. 문제 유형: "최소공배수 (공통 주기)"
13-1. [문제 정의] "두 수의 공통된 배수 중 가장 작은 값 (예: 버스 배차 간격)"
13-2. [핵심 함수] math.lcm(a, b) (3.9+) / (a * b) // math.gcd(a, b) (3.8 이하)
13-3. [실전 예제] 백준: "최소공배수" (1934번)
13-4. [풀이 전략] 코테 환경에 맞춰 lcm 함수를 사용하거나 직접 구현합니다.
Chapter 14. 문제 유형: "소수 판별 (시간 효율화)"
14-1. [문제 정의] "어떤 수 N이 소수인지 아닌지 빠르게 판별"
14-2. [핵심 함수] math.sqrt(n)
14-3. [실전 예제] 프로그래머스: "소수 찾기"
14-4. [풀이 전략] 2부터 int(math.sqrt(n)) + 1까지만 나누어 검사합니다.
Chapter 15. 문제 유형: "좌표 거리 계산 (피타고라스)"
15-1. [문제 정의] "두 점 (x1, y1), (x2, y2) 사이의 직선 거리를 구하기"
15-2. [핵심 함수] math.sqrt(), math.pow(n, 2) (또는 ** 2)
15-3. [실전 예제] 백준: "터렛" (1002번)
15-4. [풀이 전략] sqrt((x2-x1)² + (y2-y1)²) 공식을 구현합니다.
Chapter 16. 문제 유형: "올림 계산 (요금, 일수)"
16-1. [문제 정의] "2.1일 → 3일, 11분 → 20분 요금처럼 무조건 올림 처리"
16-2. [핵심 함수] math.ceil(n)
16-3. [실전 예제] 프로그래머스: "기능개발", "주차 요금 계산"
16-4. [풀이 전략] (총량 / 단위)의 결과를 ceil 처리합니다.
Chapter 17. 문제 유형: "내림 / 버림 계산"
17-1. [문제 정의] "소수점 이하를 무조건 버리기"
17-2. [핵심 함수] math.floor(n) (음수 주의) / int(n) (0을 향해 버림)
17-3. [실전 예제] "N개로 만들 수 있는 최대 묶음 수"
17-4. [풀이 전략] int(총량 / 단위)로 몫만 취합니다.
Chapter 18. 문제 유형: "팩토리얼 (N!) 계산"
18-1. [문제 정의] "N부터 1까지 모두 곱한 값(N!)을 구하기 (경우의 수)"
18-2. [핵심 함수] math.factorial(n)
18-3. [실전 예제] 프로그래머스: "줄 서는 방법" (K번째 순열 유추)
18-4. [풀이 전략] (N-1)!을 기준으로 K번째 순서의 첫 번째 숫자를 찾습니다.
Part 4: heapq (우선순위 큐)
Chapter 19. 문제 유형: "최소 힙 (가장 작은 값)"
19-1. [문제 정의] "데이터를 넣을 때마다 항상 가장 작은 값을 빠르게 추출"
19-2. [핵심 함수] heapq.heappush(heap, item), heapq.heappop(heap)
19-3. [실전 예제] 프로그래머스: "더 맵게"
19-4. [풀이 전략] 모든 스코빌 지수를 힙에 넣고, 가장 작은 2개를 뽑아 연산 후 다시 힙에 넣습니다.
Chapter 20. 문제 유형: "최대 힙 (가장 큰 값)"
20-1. [문제 정의] "데이터를 넣을 때마다 항상 가장 큰 값을 빠르게 추출"
20-2. [핵심 전략] "음수 트릭": heapq.heappush(heap, -item)
20-3. [실전 예제] 백준: "최대 힙" (11279번)
20-4. [풀이 전략] 힙에 값을 넣을 때 음수로, 뺄 때 다시 음수로 바꿔 최대 힙을 구현합니다.
Chapter 21. 문제 유형: "절댓값 힙"
21-1. [문제 정의] "절댓값이 가장 작은 값을, 같다면 원래 값이 작은 값을 추출"
21-2. [핵심 전략] "튜플 저장": heapq.heappush(heap, (abs(x), x))
21-3. [실전 예제] 백준: "절댓값 힙" (11286번)
21-4. [풀이 전략] 튜플의 첫 번째 요소(절댓값)를 기준으로 자동 정렬되는 힙의 원리를 이용합니다.
Chapter 22. 문제 유형: "다익스트라 (최소 비용 경로)"
22-1. [문제 정의] "가중치가 있는 그래프에서 한 노드에서 다른 노드로 가는 최소 비용"
22-2. [핵심 자료구조] heapq (우선순위 큐 활용)
22-3. [실전 예제] 백준: "최단경로" (1753번)
22-4. [풀이 전략] (비용, 노드) 튜플을 힙에 넣어, 항상 비용이 가장 적은 노드를 먼저 탐색합니다.
Part 5: bisect (이진 탐색 라이브러리)
Chapter 23. 문제 유형: "정렬된 리스트에서 값의 개수 세기"
23-1. [문제 정의] "정렬된 리스트에서 특정 값 x가 몇 개 있는지 O(logN)으로 찾기"
23-2. [핵심 함수] bisect_left(list, x), bisect_right(list, x)
23-3. [실전 예제] 프로그래머스: "정렬된 배열에서 특정 수의 개수 구하기"
23-4. [풀이 전략] bisect_right(x) - bisect_left(x)로 개수를 셉니다.
Chapter 24. 문제 유형: "정렬된 리스트에 값 삽입"
24-1. [문제 정의] "정렬을 유지하면서 리스트에 새 값을 삽입할 위치를 찾기"
24-2. [핵심 함수] bisect.insort(list, x)
24-3. [실전 예제] "정렬된 리스트 유지하기"
24-4. [풀이 전략] insort를 사용해 O(N)이지만 O(logN)으로 위치를 찾아 삽입합니다.
Part 6: 내장 함수 (기본 수학 도구)
Chapter 25. 문제 유형: "N진법 → 10진법 변환"
25-1. [문제 정의] "2진수, 3진수, 16진수 등의 '문자열'을 10진수 '숫자'로"
25-2. [핵심 함수] int(string, base)
25-3. [실전 예제] 프로그래머스: "3진법 뒤집기"
25-4. [풀이 전략] 3진법으로 바꾼 문자열을 뒤집고 int(reversed_str, 3)을 호출합니다.
Chapter 26. 문제 유형: "10진법 → N진법 변환"
26-1. [문제 정의] "10진수 '숫자'를 2, 8, 16진수 '문자열'로"
26-2. [핵심 함수] bin(n), oct(n), hex(n) (접두어 [2:] 제거 팁)
26-3. [실전 예제] "이진 변환 반복하기"
26-4. [풀이 전략] bin(n)[2:]로 2진수 문자열을 얻습니다. (Tip: N진법 변환은 직접 구현)
Chapter 27. 문제 유형: "비트마스킹 (Bitmasking)"
27-1. [문제 정의] "정수의 비트 연산(AND, OR, XOR...)으로 집합을 표현"
27-2. [핵심 함수] bin(), &, |, ^, <<, >>
27-3. [실전 예제] "집합" (백준 11723번)
27-4. [풀이 전략] 비트 연산으로 원소 추가/삭제/확인을 O(1)에 처리합니다.
Chapter 28. 문제 유형: "모듈러 거듭제곱 (큰 수의 나머지)"
28-1. [문제 정의] "(A의 B제곱)을 C로 나눈 나머지를 시간 초과 없이 구하기"
28-2. [핵심 함수] pow(A, B, C)
28-3. [실전 예제] 백준: "곱셈" (1629번)
28-4. [풀이 전략] (A ** B) % C 대신 pow(A, B, C)를 사용해 O(logB)로 계산합니다.
Chapter 29. 문제 유형: "반올림 (Round의 함정)"
29-1. [문제 정의] "소수점을 반올림해야 하는데 round()가 이상하게 동작"
29-2. [핵심 함수] round(n) (오사오입: Round-to-nearest-even)
29-3. [실전 예제] "평균값 반올림하기"
29-4. [풀이 전략] round(2.5)는 2, round(3.5)는 4가 됨을 인지하고, 필요시 int(n + 0.5) 트릭을 사용합니다.
에필로그: 이제, 여러분의 코드로 세상을 풀어낼 시간입니다.
인물정보
저자(글) 김아인
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 5,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 5,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!