개발 일기/개발의 길 위에서

[서평]Do it! 알고리즘 코딩테스트 자바편/ 코딩테스트 책 추천

문에딕트 2022. 4. 13. 21:01

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=291743655 

 

Do it! 알고리즘 코딩 테스트 : 자바 편

“코딩 테스트는 어떻게 준비해야 할까?” 곧 코딩 테스트를 앞두고 있거나 올해 안에 IT 기업으로 취업 또는 이직을 준비하고 있다면 누구나 이런 고민을 할 것이다. 《Do it! 알고리즘 코딩 테스

www.aladin.co.kr

목차 확인하기

더보기

목 차

 

첫째마당 코딩 테스트 준비하기

01 어떤 알고리즘으로 풀어야 할까?
_01-1 시간 복잡도 표기법 알아보기
_01-2 시간 복잡도 활용하기
__[000] 수 정렬하기

02 코드의 논리 오류를 어떻게 잡을까?
_02-1 디버깅은 왜 중요할까?
_02-2 디버깅 활용 사례 살펴보기

둘째마당 Do it! 코딩 테스트 ― 기초 편

03 자료구조
_03-1 배열과 리스트
__[001] 숫자의 합 구하기
__[002] 평균 구하기
_03-2 구간 합
__[003] 구간 합 구하기 1
__[004] 구간 합 구하기 2
__[005] 나머지 합 구하기
__[006] 연속된 자연수의 합 구하기
_03-3 투 포인터
__[007] 주몽의 명령
__[008] ‘좋은 수’ 구하기
_03-4 슬라이딩 윈도우
__[009] DNA 비밀번호
__[010] 최솟값 찾기 1
_03-5 스택과 큐
__[011] 스택으로 오름차순 수열 만들기
__[012] 오큰수 구하기
__[013] 카드 게임
__[014] 절댓값 힙 구현하기

04 정렬
_04-1 버블 정렬
__[015] 수 정렬하기 1
__[016] 버블 소트 프로그램 1
_04-2 선택 정렬
__[017] 내림차순으로 자릿수 정렬하기
_04-3 삽입 정렬
__[018] ATM 인출 시간 계산하기
_04-4 퀵 정렬
__[019] K번째 수 구하기
_04-5 병합 정렬
__[020] 수 정렬하기 2
__[021] 버블 소트 프로그램 2
_04-6 기수 정렬
__[022] 수 정렬하기 3

05 탐색
_05-1 깊이 우선 탐색
__[023] 연결 요소의 개수 구하기
__[024] 신기한 소수 찾기
__[025] 친구 관계 파악하기
_05-2 너비 우선 탐색
__[026] DFS와 BFS 프로그램
__[027] 미로 탐색하기
__[028] 트리의 지름 구하기
_05-3 이진 탐색
__[029] 원하는 정수 찾기
__[030] 블루레이 만들기
__[031] 배열에서 K번째 수 찾기

06 그리디
_06-1 그리디 알고리즘
__[032] 동전 개수의 최솟값 구하기
__[033] 카드 정렬하기
__[034] 수를 묶어서 최댓값 만들기
__[035] 회의실 배정하기
__[036] 최솟값을 만드는 괄호 배치 찾기

07 정수론
_07-1 소수 구하기
__[037] 소수 구하기
__[038] 나머지 합 구하기
__[039] 소수 & 팰린드롬 수 중에서 최솟값 찾기
__[040] 제곱이 아닌 수 찾기
_07-2 오일러 피
__[041] 오일러 피 함수 구현하기
_07-3 유클리드 호제법
__[042] 최소 공배수 구하기
__[043] 최대 공약수 구하기
__[044] 칵테일 만들기
_07-4 확장 유클리드 호제법
__[045] Ax + By = C

셋째마당 Do it! 코딩 테스트 ― 실전 편

08 그래프
_08-1 그래프의 표현
__[046] 특정 거리의 도시 찾기
__[047] 효율적으로 해킹하기
__[048] 이분 그래프 판별하기
__[049] 물의 양 구하기
_08-2 유니온 파인드
__[050] 집합 표현하기
__[051] 여행 계획 짜기
__[052] 거짓말쟁이가 되긴 싫어
_08-3 위상 정렬
__[053] 줄 세우기
__[054] 게임 개발하기
__[055] 임계 경로 구하기
_08-4 다익스트라
__[056] 최단 경로 구하기
__[057] 최소 비용 구하기
__[058] K번째 최단 경로 찾기
_08-5 벨만-포드
__[059] 타임머신으로 빨리 가기
__[060] 세일즈맨의 고민
_08-6 플로이드-워셜
__[061] 가장 빠른 버스 노선 구하기
__[062] 경로 찾기
__[063] 케빈 베이컨의 6단계 법칙
_08-7 최소 신장 트리
__[064] 최소 신장 트리 구하기
__[065] 다리 만들기
__[066] 불우이웃돕기

09 트리
_09-1 트리 알아보기
__[067] 트리의 부모 찾기
__[068] 리프 노드의 개수 구하기
_09-2 트라이
__[069] 문자열 찾기
_09-3 이진 트리
__[070] 트리 순회하기
_09-4 세그먼트 트리
__[071] 구간 합 구하기 3
__[072] 최솟값 찾기 2
__[073] 구간 곱 구하기
_09-5 최소 공통 조상
__[074] 최소 공통 조상 구하기 1
__[075] 최소 공통 조상 구하기 2

10 조합
_10-1 조합 알아보기
__[076] 이항계수 구하기 1
__[077] 이항계수 구하기 2
__[078] 부녀회장이 될 테야
__[079] 다리 놓기
__[080] 조약돌 꺼내기
__[081] 순열의 순서 구하기
__[082] 사전 찾기
__[083] 선물 전달하기

11 동적 계획법
_11-1 동적 계획법 알아보기
__[084] 정수를 1로 만들기
__[085] 퇴사 준비하기
__[086] 이친수 구하기
__[087] 2*N 타일 채우기
__[088] 계단 수 구하기
__[089] 연속 합 구하기
__[090] 최장 공통 부분 수열 찾기
__[091] 가장 큰 정사각형 찾기
__[092] 빌딩 순서 구하기
__[093] DDR을 해보자
__[094] 행렬 곱 연산 횟수의 최솟값 구하기
__[095] 외판원의 순회 경로 짜기
__[096] 가장 길게 증가하는 부분 수열 찾기

12 기하
_12-1 기하 알아보기
__[097] 선분 방향 구하기
__[098] 선분의 교차 여부 구하기
__[099] 선분을 그룹으로 나누기
__[100] 다각형의 면적 구하기

<Do it! 알고리즘 코딩테스트 자바편>이 출간 되었다.

먼저, 나는 <Do it! 자료구조와 함께 배우는 알고리즘 입문 자바편>도 소장하고 있으니 비교하면서 살펴보겠다.

<Do it! 자료구조와 함께 배우는 알고리즘 입문 자바편>은 코딩테스트 책보다 아주 조금 더 원론적인 부분까지 건들인다. 비교적으로 그렇다는 거지 완전 교과서적인 것은 아니다.

구성이

1. 실습예제
2. 연습문제
3. 보충수업

 

인데 꽤 많은 실습예제들 중심으로 책이 구성되어 있고 그 예제를 조금 발전 시키면 연습문제를 풀 수 있다. 혼자서 학습하는 데 지루하지 않을 수준에서 자세한 설명이 있기때문에 알고리즘, 자료구조 기초를 배운 적 없고 교과서를 보기엔 부담스러우나 기초를 튼튼히 하고 싶다면 선택하면 되겠다.

<Do it! 알고리즘 코딩테스트 자바편>은 정말 말그대로 코딩테스트에 특화되어있다.

맨 처음에 시간복잡도와 디버깅의 중요성과 사용법을 알려주기 때문에 먼저 기준을 확실하게 잡아주는 느낌이다.

또 다른 장점은 코딩테스트 준비생들이 많이 이용하는 백준 온라인 저지 100문제를 선별해서 직접 자세하게 풀이는 해준다는것!

나 또한 자바를 처음 공부하면 백준을 끄적여본적이 있는데 통과는 되더라도 내가 뭐 이게 맞게 푼건지.. 구글링을 해 남의 코드를 봐도 그게 제일 좋은 솔루션이라는 신빙성도 없어서, 본격적으로 코테 준비를 시작하며 정확한 가이드가 없는 백준 저지 대신 다른 저지 사이트를 선택할 정도였다.

책은 그 100문제를 중심으로 진행된다.

구성은

준비단계: 핵심이론 알아보기
1. 문제 분석하기
2. 손으로 전략 세우기
3. 슈도코드로 구체화하기
4. 코드작성, 리뷰하기

인데 예시를 보여주자면,

 

이렇게 대신 손으로 전략을 세워주니 시간을 많이 아낄 수 있다.

슈도코드란 특정 프로그래밍 언어 의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다.

이렇게 인간의 언어로 먼저 작성해 로직을 다시 명확하게 해보는 것이다..!

이렇게 자세히 알려주니 혼자 백준 문제를 풀고도 답답했던 내 마음이 뻥 뚫린다.

알고리즘, 자료구조, 코딩 테스트 공부를 시작할 마음을 먹으며 기본 책이 있으면 좋겠어서 많이 찾아 봤는데, 특히 유명한 코테 책은 파이썬 위주, 아니면 c언어 였다. 코테용으로 따로 다른 언어를 공부하는 분도 많지만, 다른 언어 쓸 일이 없고 자바를 위주로 사용한다면 굳이 그럴 필요 없으니, 자바만 공부해보고, 파이썬, C언어를 공부해 본 경험이 없던 나는 그래서 <Do it! 자료구조와 함께 배우는 알고리즘 입문 자바편>를 선택했었다.

물론 <Do it! 자료구조와 함께 배우는 알고리즘 입문 자바편>도 훌륭하지만 코딩테스트 공부에 대한 답답함이 있었다면 <Do it! 알고리즘 코딩테스트 자바편>를 추천한다!