지은이 : 박상길
카카오 검색팀과 자연어처리팀을 거쳐 현재 현대자동차 AI 리서치 랩에서 차량에 탑재되는 AI 플랫폼을 만든다. 카카오 채용 코딩 테스트 출제 위원회 소속으로 오랜 기간 개발자 채용에 관여해 왔으며, 현대자동차에서도 AI 플랫폼 팀장으로서 다양한 면접에 참여하고 있다. 현대차그룹(현대차, 기아차, 모비스, 오토에버 등)의 소프트웨어 전문가 채용을 담당하는 TFT에도 소속되어 있다.2017년, 국내 IT 업계 처음으로 블라인드 채용을 시행한 카카오 신입 개발자 공채의 문제 출제 위원으로 활동했으며, 오프라인 필기 시험의 문제 대부분을 출제하기도 했다. 프로필 사진은 카카오 개발자 공채 최종 오프라인 시험 당시 코엑스에 감독관으로 나갔을 때 현장에서 촬영한 사진이다.
[1부 코딩 인터뷰]
1장 코딩 인터뷰
코딩 인터뷰를 위한 온라인 테스트 플랫폼
국내 기업의 코딩 테스트 플랫폼 활용 현황
온라인 코딩 테스트의 사전 준비사항
화이트보드 코딩 인터뷰
2장 프로그래밍 언어 선택
경진대회 통계로 알아본 언어 선호도
프로그래밍 언어별 특징
__루프
__제네릭 프로그래밍
__배열 반복
__구조체
__클래스
코딩 테스트에 최적인 프로그래밍 언어는?
[2부 파이썬]
3장 파이썬
파이썬에 대한 이해
파이썬 문법
__인덴트
__네이밍 컨벤션
__타입 힌트
__리스트 컴프리헨션
__제너레이터
__range
__enumerate
__// 나눗셈 연산자
__print
__pass
__locals
코딩 스타일
__변수명과 주석
__리스트 컴프리헨션
__구글 파이썬 스타일 가이드
4장 빅오, 자료형
빅오
__상한과 최악
__분할 상환 분석
__병렬화
자료형
__파이썬 자료형
__원시 타입
__객체
5장 리스트, 딕셔너리
리스트
__리스트의 활용 방법
__리스트의 특징
딕셔너리
__딕셔너리의 활용 방법
__딕셔너리 모듈
6장 문자열 조작
[문제]_01 유효한 팰린드롬
[문제]_02 문자열 뒤집기
[문제]_03 로그 파일 재정렬
[문제]_04 가장 흔한 단어
[문제]_05 그룹 애너그램
여러 가지 정렬 방법
[문제]_06 가장 긴 팰린드롬 부분 문자열
유니코드와 UTF-8
[3부 선형 자료구조]
7장 배열
[문제]_07 두 수의 합
[문제]_08 빗물 트래핑
[문제]_09 세 수의 합
[문제]_10 배열 파티션 I
[문제]_11 자신을 제외한 배열의 곱
[문제]_12 주식을 사고팔기 가장 좋은 시점
8장 연결 리스트
[문제]_13 팰린드롬 연결 리스트
[문제]_14 두 정렬 리스트의 병합
[문제]_15 역순 연결 리스트
[문제]_16 두 수의 덧셈
[문제]_17 페어의 노드 스왑
[문제]_18 홀짝 연결 리스트
[문제]_19 역순 연결 리스트 II
9장 스택, 큐
스택
__연결 리스트를 이용한 스택 ADT 구현
[문제]_20 유효한 괄호
[문제]_21 중복 문자 제거
[문제]_22 일일 온도
큐
[문제]_23 큐를 이용한 스택 구현
[문제]_24 스택을 이용한 큐 구현
[문제]_25 원형 큐 디자인
10장 데크, 우선순위 큐
데크
[문제]_26 원형 데크 디자인
우선순위 큐
[문제]_27 k개 정렬 리스트 병합
11장 해시 테이블
해시
__생일 문제
__비둘기집 원리
__로드 팩터
__해시 함수
충돌
__개별 체이닝
__오픈 어드레싱
__언어별 해시 테이블 구현 방식
[문제]_28 해시맵 디자인
[문제]_29 보석과 돌
[문제]_30 중복 문자 없는 가장 긴 부분 문자열
[문제]_31 상위 K 빈도 요소
[4부 비선형 자료구조]
12장 그래프
오일러 경로
해밀턴 경로
그래프 순회
__DFS(깊이 우선 탐색)
__BFS(너비 우선 탐색)
백트래킹
제약 충족 문제
[문제]_32 섬의 개수
[문제]_33 전화 번호 문자 조합
[문제]_34 순열
[문제]_35 조합
[문제]_36 조합의 합
[문제]_37 부분 집합
[문제]_38 일정 재구성
[문제]_39 코스 스케줄
13장 최단 경로 문제
[문제]_40 네트워크 딜레이 타임
[문제]_41 K 경유지 내 가장 저렴한 항공권
14장 트리
트리의 각 명칭
그래프 vs 트리
이진 트리
[문제]_42 이진 트리의 최대 깊이
[문제]_43 이진 트리의 직경
[문제]_44 가장 긴 동일 값의 경로
[문제]_45 이진 트리 반전
[문제]_46 두 이진 트리 병합
[문제]_47 이진 트리 직렬화 & 역직렬화
[문제]_48 균형 이진 트리
[문제]_49 최소 높이 트리
이진 탐색 트리(BST)
__자가 균형 이진 탐색 트리
[문제]_50 정렬된 배열의 이진 탐색 트리 변환
[문제]_51 이진 탐색 트리(BST)를 더 큰 수 합계 트리로
[문제]_52 이진 탐색 트리(BST) 합의 범위
[문제]_53 이진 탐색 트리(BST) 노드 간 최소 거리
트리 순회
[문제]_54 전위, 중위 순회 결과로 이진 트리 구축
15장 힙
힙 연산
__삽입
__추출
[문제]_55 배열의 K번째 큰 요소
16장 트라이
[문제]_56 트라이 구현
[문제]_57 팰린드롬 페어
[5부 알고리즘]
17장 정렬
버블 정렬
병합 정렬
퀵 정렬
안정 정렬 vs 불안정 정렬
[문제]_58 리스트 정렬
[문제]_59 구간 병합
[문제]_60 삽입 정렬 리스트
[문제]_61 가장 큰 수
[문제]_62 유효한 애너그램
[문제]_63 색 정렬
[문제]_64 원점에 K번째로 가까운 점
18장 이진 검색
[문제]_65 이진 검색
[문제]_66 회전 정렬된 배열 검색
[문제]_67 두 배열의 교집합
[문제]_68 두 수의 합 II
[문제]_69 2D 매트릭스 검색 II
19장 비트 조작
부울 연산자
비트 연산자
비트 조작 퀴즈
__자릿수 제한 비트 연산
2의 보수
__2의 보수 숫자 포맷
__2의 보수 수학 연산
__비트 연산자 NOT
[문제]_70 싱글 넘버
[문제]_71 해밍 거리
[문제]_72 두 정수의 합
[문제]_73 UTF-8 검증
[문제]_74 1비트의 개수
20장 슬라이딩 윈도우
[문제]_75 최대 슬라이딩 윈도우
[문제]_76 부분 문자열이 포함된 최소 윈도우
[문제]_77 가장 긴 반복 문자 대체
21장 그리디 알고리즘
배낭 문제
동전 바꾸기 문제
가장 큰 합
[문제]_78 주식을 사고 팔기 가장 좋은 시점 II
[문제]_79 키에 따른 대기열 재구성
[문제]_80 태스크 스케줄러
[문제]_81 주유소
[문제]_82 쿠키 부여
22장 분할 정복
[문제]_83 과반수 엘리먼트
[문제]_84 괄호를 삽입하는 여러 가지 방법
23장 다이나믹 프로그래밍
최적 부분 구조
중복된 하위 문제들
다이나믹 프로그래밍 방법론
[문제]_85 피보나치 수
0-1 배낭 문제
[문제]_86 최대 서브 배열
[문제]_87 계단 오르기
[문제]_88 집 도둑
부록A 회사 및 이직 가이드
회사 가이드
취업 준비
이직 준비
이직 가이드
부록B 카카오 공채 문제 풀이
[문제]_B1 비밀 지도
[문제]_B2 다트 게임
[문제]_B3 캐시
[문제]_B4 셔틀버스
[문제]_B5 뉴스 클러스터링
[문제]_B6 프렌즈4블록
[문제]_B7 추석 트래픽
도서 DB 제공 - 알라딘 인터넷서점 (www.aladin.co.kr)