책소개
핵심 개념, 프로그래머스에서 선별한 79개 문제 풀이, PCCP 대비까지!
합격에 한 걸음 더 가까워지는 실전형 코딩 테스트 문제 풀이 가이드
개발자 취업과 이직의 필수 관문, 코딩 테스트! 어떻게 준비해야 할까? 이 책은 시간 복잡도, 배열, 문자열, 정렬, 이진 탐색, 완전 탐색, 해시, 동적 프로그래밍, 자주 나오는 자료 구조 등 코딩 테스트에 필요한 핵심 지식을 모두 담고 있다. 단순히 문제를 풀어보는 것에서 그치지 않고, 문제를 분석하고, 요구 조건을 체크하고, 다양한 접근법으로 설계한 내용을 구현하며 문제를 푸는 생각의 흐름을 완성할 수 있게 도와준다. 또한, 기본 문제 풀이 외에 핵심 개념 및 다양한 풀이를 함께 살펴보며, 방금 푼 그 문제를 100% 내 것으로 만들 수 있게 구성했다. 프로그래머스의 노하우가 담긴 문제를 선별해 담았으며, 자바스러운 문제 풀이와 해결법으로 자바를 좀 더 깊이 있게 이해할 수 있다. 마지막으로 카카오 블라인드 테스트와 코딩전문역량인증시험(PCCP) 모의고사 문제를 책에서 배운 내용들을 이용해 풀어보면서 실전 감각을 키울 수 있다. 취업과 이직을 위해 코딩 테스트를 준비한다면 이 책으로 시작해보자.
저자소개
한양대학교 소프트웨어학과를 졸업한 구글 코리아의 소프트웨어 엔지니어이다. 좌우명이 "좋은 코드가 좋은 제품을 만든다"인 만큼, 가독성이 높고 깔끔한 코드를 작성하는 것을 매우 중요하게 생각한다. 회사에서는 본업 외에도 2021년도부터 Google Coding Practice with Kick Start에서 프로그램을 통해 문제 해결을 처음 접하는 분들을 위해 공식 문제 해설과 플랫폼 안내 영상을 촬영하고 있다.
목차
1장. 코딩 테스트
1.1?코딩 테스트란??
1.2?코딩 테스트를 보는 이유?
_1.2.1?문제 해결 과정을 보는 것?
_1.2.2?똑같은 결과를 빠르고, 효율적으로?
1.3?코딩과 디버깅?
_1.3.1?잘 짠 코드란?
_1.3.2?코드를 짤 때 흔히 하는 실수들
_1.3.3?디버깅과 시행착오 줄이기
_1.3.4?직접 설계하며 코드 작성해보기
2장. 시간 복잡도
2.1?시간 복잡도란??
_2.1.1?빅오 표기법
_2.1.2?시간 복잡도 그래프
_2.1.3?입력 데이터 개수별 사용 가능한 시간 복잡도 알고리즘?
2.2?시간 복잡도 계산하기?
_2.2.1?어림짐작해보기
_2.2.2?시간 복잡도를 줄이는 방법
_2.2.3?여러 알고리즘을 사용할 때 시간 복잡도 생각해보기
3장. 배열
3.1?2차원 배열 이해하기?
_3.1.1?1차원 배열 + 1차원 배열??
_3.1.2?2차원 배열 이해하기
3.2?2차원 배열 다루어 보기?
_3.2.1?2차원 배열 응용
[문제 01]?교점에 별 만들기 - Level 2
[문제 02] 삼각 달팽이 - Level 2?
_3.2.2?dx, dy로 방향을 정하는 방법?
[문제 03] 거리두기 확인하기 - Level 2
_3.2.3?연산?
[문제 04] 행렬의 곱셈 - Level 2
4장. 문자열
4.1?문자열이란?
_4.1.1?문자열의 특징?
_4.1.2?문자열을 다른 방식으로 생각해보기?
[문제 05] 자연수 뒤집어 배열로 만들기 - Level 1?
[문제 06] 이상한 시저 암호 - Level 1?
[문제 07] 이상한 문자 만들기 ? Level 1?
4.2?문자열 다루어 보기
_4.2.1?문자열 응용하기?
[문제 08] 문자열 압축 ? Level 2?
_4.2.2?진법 바꾸기?
[문제 09] 3진법 뒤집기 - Level 1?
[문제 10] 이진 변환 반복하기 - Level 2?
_4.2.3?찾기와 바꾸기?
[문제 11] 문자열 내 p와 y의 개수 - Level 1?
[문제 12] 숫자 문자열과 영단어 - Level 1?
4.3?정규표현식?
[문제 13] 문자열 다루기 기본 - Level 1?
[문제 14] 신규 아이디 추천 - Level 1?
5장. 재귀
5.1?재귀란??
_5.1.1?for 문에서 벗어나기?
_5.1.2?재귀의 최대 범위와 한계점 기억하기
5.2?재귀 정의하기?
_5.2.1?상태 정의하기?
_5.2.2?종료 조건?
_5.2.3?점화식?
5.3?코드 작성하기
_5.3.1 코드 변환하기
_5.3.2 다양한 문제 풀이?
[문제 15] 쿼드압축 후 개수 세기 - Level 2?
[문제 16] 하노이의 탑 - Level 3?
[문제 17] 모음 사전 - Level 2?
6장. 완전 탐색
6.1?완전 탐색이란??
_6.1.1?상태와 상태 전이 진행?
_6.1.2?완전 탐색의 종류?
_6.1.3?방문 처리
6.2?다양한 문제 풀이?
[문제 18] 모의고사 ? Level 1?
[문제 19] 카펫 ? Level 2?
[문제 20] 수식 최대화 - Level 2
[문제 21] 소수 찾기 ? Level 2?
[문제 22] 불량 사용자 - Level 3?
7장. 정렬
7.1?정렬이란??
_7.1.1?정렬 기준 잡기?
_7.1.2?정렬 효율 높이기
7.2?정렬하기?
_7.2.1?기본 기준 사용하기?
[문제 23] K번째 수 ? Level 1?
[문제 24] 두 개 뽑아서 더하기 - Level 1?
[문제 25] H-Index - Level 2
_7.2.2?직접 기준 정하기?
[문제 26] 문자열 내림차순으로 배치하기
[문제 27] 문자열 내 마음대로 정렬하기 - Level 1?
[문제 28] 가장 큰 수 - Level 2
[문제 29] 메뉴 리뉴얼 - Level 2
8장. 이진 탐색
8.1?이진 탐색이란??
_8.1.1?이진 탐색이 갖는 이점?
_8.1.2?이진 탐색을 사용할 수 있는 조건?
8.2?탐색 효율 높이기?
_8.2.1?분할 정복
_8.2.2?정렬 기준 정하기
8.3 자바의 이진 탐색 메서드
8.4?다양한 문제 풀이?
[문제 30] 순위 검색 - Level 2
[문제 31] 입국심사 - Level 3?
[문제 32] 징검다리 - Level 4?
9장. 해시
9.1?해시란??
_9.1.1?해시 테이블
_9.1.2?해시의 시간 복잡도?
9.2?다양한 문제 풀이
[문제 33] 평행 - Level 0
[문제 34] 중복된 문자 제거 - Level 0?
[문제 35] A로 B 만들기 - Level 0
[문제 36] 없는 숫자 더하기 - Level 1
[문제 37] 완주하지 못한 선수 - Level 1?
10장. 동적 프로그래밍
10.1?동적으로 연산 줄이기?
_10.1.1?완전 탐색의 문제점?
_10.1.2?‘동적 프로그래밍’의 핵심, 메모이제이션
_10.1.3?동적 프로그래밍의 조건
_10.1.4 번외: 순차 누적으로 구현해보기?
10.2?다양한 문제 풀이?
[문제 38] 피보나치 수 - Level 2
[문제 39]?정수 삼각형 - Level 3
[문제 40] 등굣길 - Level 3
[문제 41] 사칙연산 - Level 4
11장. 자주 등장하는 자료 구조
11.1?스택과 큐?
_11.1.1?스택?
[문제 42] 올바른 괄호 - Level 2
[문제 43] 괄호 회전하기 - Level 2
[문제 44] 주식 가격 - Level 2
_11.1.2?큐
[문제 45] 기능 개발 - Level 2
[문제 46] 다리를 지나는 트럭 - Level 2
_11.1.3?덱
11.2?그래프와 트리?
_11.2.1?그래프
[문제 47] 순위 - Level 3
[문제 48]?방의 개수 - Level 5?
_11.2.2?트리와 이진 트리
[문제 49] 길 찾기 게임 - Level 3
11.3?잊을 만하면 나오는 자료 구조?
_11.3.1?우선순위 큐 467
[문제 50]?이중 우선순위 큐 - Level 3?441
[문제 51]?디스크 컨트롤러 - Level 3
_11.3.2?투 포인터?473
[문제 52] 보석 쇼핑 - Level 3?
_11.3.3?유니온 파인드
[문제 53] 섬 연결하기 - Level 3
[문제 54] 호텔 방 배정 - Level 4?
_11.3.4?트라이?
[문제 55] 가사 검색 - Level 4
12장. 구현
12.1?주의해야 할 점?
_12.1.1?구현이 어려운 문제인 이유?
_12.1.2?디버깅 빨리하기?
12.2?문제에서 이야기하는 대로 만들기?
_12.2.1?규칙 찾아보기?
_12.2.2?다양한 문제 풀이?
[문제 56]?스킬 트리 - Level 2
[문제 57] 키패드 누르기 - Level 1
12.3?완전 탐색 기반으로 풀기?
_12.3.1?깊이 우선 탐색(DFS)?
_12.3.2 DFS: 스택
[문제 58] 타깃 넘버 - Level 2?
[문제 59] 네트워크 - Level 3?
_12.3.3?너비 우선 탐색(BFS)?
_12.3.4 BFS: 큐
[문제 60] 단어 변환 - Level 3?
[문제 61] 게임 맵 최단거리 - Level 3?
12.4?그리디 알고리즘?
_12.4.1?현재 상황에서 최선?
_12.4.2?결과적으로 최선인가??
_12.4.3?다양한 문제 풀이?
[문제 62] 체육복 - Level 1?
[문제 63] 큰 수 만들기 - Level 2?
[문제 64] 단속 카메라 - Level 3
13장. 도전: 카카오 2022 블라인드 테스트
[문제 65] 신고 결과 받기 - Level 1?
[문제 66] k진수에서 소수 개수 구하기 - Level 2
[문제 67] 주차 요금 계산 - Level 2?
[문제 68] 양궁대회 - Level 2?
[문제 69] 양과 늑대 - Level 3?
[문제 70] 파괴되지 않은 건물 - Level 3?
[문제 71] 사라지는 발판 - Level 3
14장. 코딩전문역량인증시험, PCCP 모의고사
14.1?PCCP 모의고사 1회?
[문제 72] 외톨이 알파벳 - Level 1?
[문제 73] 체육대회 - Level 2?
[문제 74] 유전법칙 - Level 2?
[문제 75] 운영체제 - Level 3?
14.2?PCCP 모의고사 2회
[문제 76] 실습용 로봇 - Level 1
[문제 77] 신입 사원 교육 - Level 2
[문제 78] 카페 확장 - Level 2
[문제 79] 보물 지도 - Level 3