성장通

[리뷰] 취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략: 파이썬 편 본문

리뷰/도서 리뷰

[리뷰] 취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략: 파이썬 편

백악기작은펭귄 2023. 4. 9. 10:26

* 길벗출판사로부터 도서를 제공받아 작성한 서평입니다.

취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략: 파이썬 편

김범수 지음

 

 

프로그래머스 코딩 테스트 문제 풀이 전략: 파이썬 편 | 김범수 - 교보문고

프로그래머스 코딩 테스트 문제 풀이 전략: 파이썬 편 | 핵심 개념, 프로그래머스에서 선별한 81개 문제 풀이, PCCP 대비까지! 합격에 한 걸음 더 가까워지는 실전형 코딩 테스트 문제 풀이 가이드

product.kyobobook.co.kr


 

간단 서평

코딩 테스트의 중요성은 개발자를 준비하는 사람들이라면 누구나 알 것이다. 하지만 따로 시간을 내어 공부하기란 쉽지 않은 것도 사실이다. 스스로 문제를 찾고, 관련 개념을 공부하고, 문제를 푼 후 고치고.. 이런 일련의 과정들이 시간과 노력이 많이 들기 때문이다. 그럴 때마다 드는 생각은, '아 누가 개념 중심으로 문제들 싹 묶어서 보여주고 매일 풀 수 있게 해 줬으면 좋겠다'라는 생각이다.

 

사실상 나는 '대학원 갈건데 당장 코테는 준비 안 해도 되겠지'라는 생각으로 매번 외면해 왔던 것도 사실이다. 하지만 최근 '효율적인 프로그래밍'에 관심을 가지게 되면서, 2학년 때 마구잡이로 배웠던 자료구조와 알고리즘을 다시 공부할 필요성을 뼈저리게 느끼고 있었다. 그래서 코딩 테스트를 준비해 봐야겠다라고 생각은 했었지만, 4학년의 바쁜 일정 속에 이를 따로 준비할 시간이 많이 부족했다.

 

그러던 중 이 책을 리뷰할 기회를 얻게 되었다. 이 책은 개발 교육 플랫폼이자 구인구직 플랫폼이기도 한 프로그래머스에서 1,500개 이상의 기업의 코딩 테스트를 출제하던 노하우를 토대로 선별한 코딩 테스트 연습문제 81개를 개념 설명과 함께 묶어서 보기 쉽게 엮은 책으로, 충실한 해설과 직관적인 그림이 함께 있어 매일 조금씩 보기 좋았다. 코딩 테스트가 무엇인지부터, 알고리즘의 가장 기본이 되는 시간 복잡도, 자료구조의 기본인 배열과 문자열, 코딩 테스트 단골 문제인 탐색과 정렬 등 다양한 개념들을 설명하며 쉬운 문제부터 어려운 문제까지 차근차근 풀 수 있도록 구성되어 있다. 게다가, 2022년 카카오 블라인드 테스트를 수록하여 양질의 고난이도 문제에 도전할 수 있도록 하였고, PCCP 모의고사도 2회 분량을 수록하여 실전처럼 연습할 수 있도록 하였다.

 

아직 전체를 모두 꼼꼼히 풀어보지는 못했지만, 매일 한 챕터씩이라도 꾸준히 해보고자 한다. 이를 통해 좀더 효율적인 코드를 작성하는 방법을 알게 되면 앞으로 어떤 개발을 하던 많은 도움이 되지 않을까 싶다. 혹시, 지금이라도 코딩 테스트를 준비해보고 싶은 사람이 있다면, 정말 강추하는 책이다. (자바 편도 있으니 자바 개발자들은 이 책을 보도록 하자.)


 

목차

1장. 코딩 테스트

1.1 코딩 테스트란? 
1.2 코딩 테스트를 보는 이유 
_1.2.1 문제 해결 과정을 보는 것 
_1.2.2 모든 것의 기초, 생각하는 실력을 다지는 것
_1.2.3 똑같은 결과를 빠르고, 효율적으로 
1.3 코딩과 디버깅 
_1.3.1 잘 짠 코드란 무엇인가? 
_1.3.2 코드를 짤 때 흔히 하는 실수 
_1.3.3 디버깅과 시행착오 줄이기

2장. 시간 복잡도

2.1 시간 복잡도란? 
_2.1.1 빅오(Big-O) 표기법 
_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 배열을 다양하게 생각해보기
3.2 2차원 배열 다뤄보기 
_3.2.1 2차원 배열 응용
[문제 01] 교점에 별 만들기 - Level 2
[문제 02] 행렬 테두리 회전하기 - Level 2 
_3.2.2 dx dy로 방향을 정하는 방법 
[문제 03] 삼각 달팽이 - Level 2
[문제 04] 거리두기 확인하기 - Level 2 
_3.2.3 연산(숫자) 
[문제 05] 행렬의 곱셈 - Level 2

4장. 문자열

4.1 문자열이란 
_4.1.1 문자열의 특징 
_4.1.2 문자열을 다른 방식으로 생각해보기 
[문제 06] 시저 암호 - Level 1 
[문제 07] 이상한 문자 만들기 - Level 1 
4.2 문자열 다뤄보기 
_4.2.1 문자열 응용하기 
[문제 08] 튜플 - Level 2 
[문제 09] 짝지어 제거하기 - Level 2 
[문제 10] 문자열 압축 - Level 2
_4.2.2 진법 바꾸기 
[문제 11] 3진법 뒤집기 - Level 1 
[문제 12] 이진 변환 반복하기 - Level 2 
_4.2.3 찾아서 바꾸기 
[문제 13] 신규 아이디 추천 - Level 1 
4.3 정규표현식 
_4.3.1 정규표현식이란 
[문제 14] 문자열 다루기 기본 - Level 1 
[문제 15] 핸드폰 번호 가리기 - Level 1 

5장. 재귀

5.1 재귀 함수란? 
_5.1.1 for 문에서 벗어나기 
_5.1.2 재귀의 최대 범위와 한계점 기억하기
_5.1.3 참고: 꼬리 재귀 
5.2 재귀 정의하기 
_5.2.1 상태 정의하기 
_5.2.2 종료 조건 
_5.2.3 점화식 세우기 
5.3 다양한 문제 풀이 
[문제 16] 콜라츠 추측 - Level 1 
[문제 17] 하노이의 탑 - Level 3 
[문제 18] 모음 사전 - Level 2 
[문제 19] 호텔 방 배정 - Level 4

6장. 완전 탐색

6.1 완전 탐색이란? 
_6.1.1 문제를 이해하는 방법 
_6.1.2 상태와 상태 전이 진행 
_6.1.3 완전 탐색의 종류와 사용되는 자료 구조 
_6.1.4 방문 처리/백트래킹
6.2 다양한 문제 풀이 
[문제 20] 모의고사 - Level 1 
[문제 21] 카펫 - Level 2 
[문제 22] 소수 찾기 - Level 2 
[문제 23] 불량 사용자 - Level 3 
[문제 24] 수식 최대화 - Level 2

7장. 정렬

7.1 정렬이란 
_7.1.1 정렬의 기준 잡기 
_7.1.2 정렬의 종류
7.2 정렬하기 
_7.2.1 기본 기준 사용하기 
[문제 25] 두 개 뽑아서 더하기 - Level 1 
[문제 26] H-index - Level 2 
_7.2.2 직접 기준 정하기 
[문제 27] 문자열 내 마음대로 정렬하기 - Level 1 
[문제 28] 가장 큰 수 - Level 2

8장. 이진 탐색

8.1 이진 탐색이란? 
_8.1.1 이진 탐색이 가지는 이점 
_8.1.2 구현 방법 
8.2 탐색 효율 높이기 
_8.2.1 정렬 기준 정하기
_8.2.2 파라메트릭 서치
8.3 다양한 문제 풀이 
[문제 29] 입국심사 - Level 3 
[문제 30] 순위 검색 - Level 2 
[문제 31] 징검다리 - Level 4 
[문제 32] 징검다리 건너기 - Level 3

9장. 해시

9.1 해시란 
_9.1.1 해시 테이블이란 
_9.1.2 해시의 시간 복잡도 
9.2 다양한 문제 풀이 
[문제 33] 완주하지 못한 선수 - Level 1 
[문제 34] 전화번호 목록 - Level 2 
[문제 35] 위장 - Level 2 
[문제 36] 오픈 채팅방 - Level 2 
[문제 37] 베스트 앨범 - Level 3 

10장. 동적 프로그래밍

10.1 연산 줄이기 
_10.1.1 완전 탐색의 문제점 
[문제 38] 피보나치 수 - Level 2 
_10.1.2 동적 프로그래밍의 핵심, 메모이제이션
_10.1.3 구현 방법 
10.2 다양한 문제 풀이 
[문제 39] N으로 표현 - Level 3 
[문제 40] 정수 삼각형 - Level 3 
[문제 41] 등굣길 - Level 3 
[문제 42] 도둑질 - Level 4

11장. 자주 등장하는 자료 구조

11.1 스택과 큐 
_11.1.1 스택 
_11.1.2 큐와 덱  
_11.1.3 다양한 문제 풀이
[문제 43] 주식 가격 - Level 2 
[문제 44] 기능 개발 - Level 2 
11.2 그래프와 트리 
_11.2.1 그래프란 
_11.2.2 트리란 
_11.2.3 다양한 문제 풀이
[문제 45] 가장 먼 노드 - Level 3 
[문제 46] 순위 - Level 3 
[문제 47] 길 찾기 게임 - Level 3 
11.3 잊을 만하면 나오는 자료 구조 
_11.3.1 우선순위 큐 467
[문제 48] 디스크 컨트롤러 - Level 3
_11.3.2 투 포인터 473
[문제 49] 보석 쇼핑 - Level 3 
_11.3.3 유니온 파인드
[문제 50] 섬 연결하기 - Level 3 
_11.3.4 트라이 
[문제 51] 가사 검색 - Level 4

12장. 구현

12.1 주의해야 할 점 
_12.1.1 구현이 어려운 문제인 이유 
_12.1.2 문제 나눠서 생각하기: 모듈화 
_12.1.3 오류에 빠르게 대처하기 
12.2 문제에서 이야기하는 대로 만들기 
_12.2.1 규칙 찾아보기 
_12.2.2 다양한 문제 풀이 
[문제 52] 키패드 누르기 - Level 1 
[문제 53] 2개 이하로 다른 비트 - Level 2 
[문제 54] 스킬 트리 - Level 2 
[문제 55] 줄 서는 방법 - Level 2
12.3 완전 탐색 기반으로 풀기 
_12.3.1 깊이 우선 탐색(DFS) 
[문제 56] 타깃 넘버 - Level 2 
[문제 57] 여행 경로 - Level 3 
[문제 58] 네트워크 - Level 3 
[문제 59] 괄호 변환 - Level 2 
_12.3.2 너비 우선 탐색(BFS) 
[문제 60] 단어 변환 - Level 3 
[문제 61] 게임 맵 최단거리 - Level 3 
[문제 62] 경주로 건설 - Level 3 
12.4 탐욕 알고리즘 
_12.4.1 현재 상황에서의 최선 
_12.4.2 탐욕 알고리즘을 사용할 수 있는 경우와 사용할 수 없는 경우 
_12.4.3 다양한 문제 풀이 
[문제 63] 조이스틱 - Level 2 
[문제 64] 큰 수 만들기 - Level 2 
[문제 65] 구명보트 - Level 2 
[문제 66] 단속 카메라 - Level 3

13장. 도전: 카카오 2022 블라인드 테스트

[문제 67] 신고 결과 받기 - Level 1 
[문제 68] k진수에서 소수 개수 구하기 - Level 2
[문제 69] 주차 요금 계산 - Level 2 
[문제 70] 양궁대회 - Level 2 
[문제 71] 양과 늑대 - Level 3 
[문제 72] 파괴되지 않은 건물 - Level 3 
[문제 73] 사라지는 발판 - Level 3

14장. 코딩전문역량인증시험, PCCP 모의고사

14.1 PCCP 모의고사 1회 
[문제 74] 외톨이 알파벳 - Level 1 
[문제 75] 체육대회 - Level 2 
[문제 76] 유전법칙 - Level 2 
[문제 77] 운영체제 - Level 3 
14.2 PCCP 모의고사 2회
[문제 78] 실습용 로봇 - Level 1
[문제 79] 신입 사원 교육 - Level 2
[문제 80] 카페 확장 - Level 2
[문제 81] 보물 지도 - Level 3