알고리즘 코딩 테스트 합격을 위한 파이썬 비법 노트
- (출판 예정) [가제] 알고리즘 코딩 테스트 합격을 위한 파이썬 비법 노트 (한빛 미디어, 나동빈 저) 소스코드 저장소입니다.
- 본 책은 Python 3.7 문법을 활용하였으나, 추가적으로 Java, C++11 소스코드를 제공할 예정입니다.
- 소스코드와 관련한 궁금한 점이나 오류 관련 문의는 Issues 탭을 이용하여 남겨주세요.
Part 1 코딩 테스트 시작하기
1장 코딩 테스트 개요
2장 코딩 테스트 유형 분석
Part 2 알고리즘 이론과 실전
3장 그리디
- 이론
- 거스름돈 문제: Python 3.7 코드
- 실전
- 동빈이의 큰 수의 법칙: Python 3.7 코드
- 숫자 카드게임: Python 3.7 코드
- 1이 될 때까지: Python 3.7 코드
4장 구현
- 이론
- 상하좌우: Python 3.7 코드
- 시각: Python 3.7 코드
- 실전
- 왕실의 나이트: Python 3.7 코드
- 게임 개발: Python 3.7 코드
5장 DFS/BFS
- 이론
- 스택 구현 예제: Python 3.7 코드
- 큐 구현 예제: Python 3.7 코드
- 무한히 반복되는 재귀함수 예시: Python 3.7 코드
- 재귀함수의 종료 조건: Python 3.7 코드
- 팩토리얼 구현하기: Python 3.7 코드
- 인접 행렬 예시: Python 3.7 코드
- 인접 리스트 예시: Python 3.7 코드
- DFS: Python 3.7 코드
- BFS: Python 3.7 코드
- 실전
- 음료수 얼려 먹기: Python 3.7 코드
- 미로 탈출: Python 3.7 코드
6장 정렬
- 이론
- 선택 정렬: Python 3.7 코드
- 삽입 정렬: Python 3.7 코드
- 퀵 정렬: Python 3.7 코드
- 계수 정렬: Python 3.7 코드
- 정렬 라이브러리 기본 예제: Python 3.7 코드
- 정렬 라이브러리 키(Key) 기준 정렬 예제: Python 3.7 코드
- 실전
- 위에서 아래로: Python 3.7 코드
- 성적이 낮은 순서대로 학생 출력하기: Python 3.7 코드
- 재고 정리: Python 3.7 코드
7장 이진 탐색
- 이론
- 순차 탐색: Python 3.7 코드
- 재귀 함수를 이용한 이진 탐색: Python 3.7 코드
- 반복문을 이용한 이진 탐색: Python 3.7 코드
- 빠르게 입력 받기: Python 3.7 코드
- 실전
- 부품 찾기
- 이진 탐색으로 해결: Python 3.7 코드
- 계수 정렬로 해결: Python 3.7 코드
- 집합(Set) 자료형으로 해결: Python 3.7 코드
- 떡볶이 만들기: Python 3.7 코드
- 부품 찾기
8장 다이나믹 프로그래밍
- 이론
- 비효율적인 피보나치 수열 구현: Python 3.7 코드
- 피보나치 수열 (Top-bottom): Python 3.7 코드
- 피보나치 수열 (Bottom-top): Python 3.7 코드
- 실전
- 1로 만들기: Python 3.7 코드
- 개미 전사: Python 3.7 코드
- 바닥 공사: Python 3.7 코드
- 효율적인 화폐 구성: Python 3.7 코드
9장 최단 경로
- 이론
- 간단한 다익스트라 알고리즘: Python 3.7 코드
- 개선된 다익스트라 알고리즘 (우선순위 큐): Python 3.7 코드
- 플로이드 워셜 알고리즘: Python 3.7 코드
- 실전
- 미래 도시: Python 3.7 코드
- 전보: Python 3.7 코드
10장 기타 그래프 이론
- 이론
- 간단한 서로소 집합 알고리즘: Python 3.7 코드
- 개선된 서로소 집합 알고리즘 (경로 압축): Python 3.7 코드
- 서로소 집합을 활용한 사이클 판별: Python 3.7 코드
- 크루스칼 알고리즘: Python 3.7 코드
- 위상 정렬: Python 3.7 코드
- 실전
- 팀 결성: Python 3.7 코드
- 도시 분할 계획: Python 3.7 코드
- 커리큘럼: Python 3.7 코드
Part 3 코딩 테스트 문제집
11장 그리디
- 모험가 길드 (핵심 유형): Python 3.7 코드
- 곱하기 혹은 더하기 (Facebook 인터뷰 기출): Python 3.7 코드
- 문자열 뒤집기 (핵심 유형): Python 3.7 코드
- 만들 수 없는 금액 (K 대회 기출): Python 3.7 코드
- 볼링공 고르기 (S 기관 입학 테스트): Python 3.7 코드
- 무지의 먹방 라이브 (카카오): Python 3.7 코드
12장 구현
- 럭키 스트레이트 (핵심 유형): Python 3.7 코드
- 문자열 재정렬 (Facebook 인터뷰 기출): Python 3.7 코드
- 문자열 압축 (카카오): Python 3.7 코드
- 자물쇠와 열쇠 (카카오): Python 3.7 코드
- 뱀 (삼성): Python 3.7 코드
- 기둥과 보 (카카오): Python 3.7 코드
- 치킨 배달 (삼성): Python 3.7 코드
- 외벽 점검 (카카오): Python 3.7 코드
13장 DFS/BFS
- 특정 거리의 도시 찾기 (핵심 유형): Python 3.7 코드
- 연구소 (삼성): Python 3.7 코드
- 경쟁적 전염 (핵심 유형): Python 3.7 코드
- 괄호 변환 (카카오): Python 3.7 코드
- 연산자 끼워 넣기 (삼성): Python 3.7 코드
- 감시 피하기 (핵심 유형): Python 3.7 코드
- 인구 이동 (삼성): Python 3.7 코드
- 블록 이동하기 (카카오): Python 3.7 코드
14장 정렬
- 국영수 (핵심 유형): Python 3.7 코드
- 안테나 (국내 S 교육 기관 선발 평가): Python 3.7 코드
- 실패율 (카카오): Python 3.7 코드
- 카드 정렬하기 (핵심 유형): Python 3.7 코드
15장 이진 탐색
- 정렬된 배열에서 특정 수의 개수 구하기 (Zoho 인터뷰 기출): Python 3.7 코드
- 고정점 찾기 (Amazon 인터뷰 기출): Python 3.7 코드
- 공유기 설치 (핵심 유형): Python 3.7 코드
- 가사 검색 (카카오): Python 3.7 코드
16장 다이나믹 프로그래밍
- 금광 (Flipkart 인터뷰 기출): Python 3.7 코드
- 정수 삼각형 (IOI): Python 3.7 코드
- 퇴사 (삼성): Python 3.7 코드
- 병사 배치하기 (핵심 유형): Python 3.7 코드
- 못생긴 수 (Google 인터뷰 기출): Python 3.7 코드
- 편집 거리 (Goldman Sachs 인터뷰 기출): Python 3.7 코드
17장 최단 경로
- 플로이드 (핵심 유형): Python 3.7 코드
- 정확한 순위 (K 대회 기출): Python 3.7 코드
- 화성 탐사 (ICPC): Python 3.7 코드
- 숨바꼭질 (USACO): Python 3.7 코드
18장 기타 그래프 이론
- 여행 계획 (핵심 유형): Python 3.7 코드
- 탑승구 (CCC): Python 3.7 코드
- 어두운 길 (University of Ulm Local Contest): Python 3.7 코드
- 행성 터널 (COCI): Python 3.7 코드
- 최종 순위 (ICPC): Python 3.7 코드
Part 4 부록
부록 A 파이썬 문법
- 자료형
- 숫자 자료형
- 정수형
- 실수형
- 숫자 자료형의 연산
- 리스트 자료형
- 리스트 초기화
- 리스트 인덱싱
- 리스트 슬라이싱
- 리스트 컴프리헨션
- 리스트 관련 메서드
- 문자열 자료형
- 문자열 초기화
- 문자열 연산
- 튜플 자료형
- 튜플 초기화
- 딕셔너리 자료형
- 딕셔너리 초기화
- 딕셔너리에서 키로 검색
- 딕셔너리 관련 메서드
- 집합 자료형
- 집합 초기화
- 집합 연산
- 집합 관련 메서드
- 숫자 자료형
- 조건문
- 조건문 예시 1
- 조건문 예시 2
- 조건문 예시 3
- pass 키워드 사용 예시
- 조건문 한 줄에 쓰기
- 조건부 표현식
- 반복문
- while 문법
- while 문법 예시 1
- while 문법 예시 2
- for 문법
- for 문법 예시 1
- for 문법 예시 2
- for 문법 예시 3
- for 문법 예시 4
- while 문법
- 함수
- 더하기 함수
- global 키워드 사용 예시
- 입출력
- 코딩 테스트에서 입력을 위한 전형적인 코드
- 공백을 기준으로 적은 수의 데이터 입력
- readline()으로 빠르게 입력 받기
부록 B 기타 알고리즘
- 이론
- 소수 판별: Python 3.7 코드
- 에라토스테네스의 체: Python 3.7 코드
- 특정한 합을 가지는 부분 연속 수열 찾기 (투 포인터): Python 3.7 코드
- 정렬되어 있는 두 리스트 합치기 (투 포인터): Python 3.7 코드
- 구간 합: Python 3.7 코드
- 순열: Python 3.7 코드
- 조합: Python 3.7 코드
- 실전
- 소수 구하기 (핵심 유형): Python 3.7 코드
- 암호 만들기 (핵심 유형): Python 3.7 코드