이롭게 현명하게
[ㄱ-LOG] 알고리즘 코딩 테스트 자바 개정판 / 이지스퍼블리싱 / 서평단 본문
목차
들어가며
이 책은 어떤 책인가?
책 후기
추천 대상
마무리
[들어가며]
평소 이지스퍼블리싱의 Do it! 시리즈를 즐겨 읽으며 많은 도움을 받아왔다.
최근 알고리즘 코딩 테스트를 준비하면서 어떻게 공부를 시작해야 할지 막막했다.
그동안 백준이나 프로그래머스에 있는 문제들을 무작정 풀기만 했는데 시간이 지날수록 체계적으로 공부할 필요성을 느끼게 되었다.
그러던 중, 마침 알고리즘 코딩 테스트 서평단을 모집한다는 소식을 접하게 되었고 망설임 없이 지원하였다.
운 좋게도 서평단에 선정되어 앞으로의 학습에 큰 도움이 될 것 같아 기대가 크다.
[ 이 책은 어떤 책인가?]
- 제목 : 알고리즘 코딩 테스트 자바 편 [개정판]
- 저자 : 김종관
- 출판사 : 이지스퍼블리싱
- 개정판 : 2025년 06월 30일
<챕터>
첫째 마당 코딩 테스트 준비하기
01 어떤 알고리즘으로 풀어야 할까?
_01-1 시간 복잡도 표기법 알아보기
_01-2 시간 복잡도 활용하기
__[000] 수 정렬하기
02 코드의 논리 오류를 어떻게 잡을까?
_02-1 디버깅은 왜 중요할까?
_02-2 디버깅 활용 사례 살펴보기
둘째 마당 Do it! 코딩 테스트 ― 기초 편
03 미리 보는 코딩 테스트 오답 노트
_03-1 예상치 못한 음수 결과 해결하기
_03-2 시간 초과의 원인을 찾아 해결하기
_03-3 인덱스에 의미 부여하여 풀어 보기
_03-4 나머지 연산의 중요성 알아보기
_03-5 정렬 기초 다지기
_03-6 다중 조건 정렬 익히기
_03-7 이차원 ArrayList 사용하기
04 자료구조
_04-1 배열과 리스트
__[001] 숫자의 합 구하기
__[002] 평균 구하기
_04-2 구간 합
__[003] 구간 합 구하기 1
__[004] 구간 합 구하기 2
__[005] 나머지 합 구하기
_04-3 투 포인터
__[006] 연속된 자연수의 합 구하기
__[007] 주몽의 명령
__[008] ‘좋은 수’ 구하기
_04-4 슬라이딩 윈도우
__[009] DNA 비밀번호
__[010] 최솟값 찾기
_04-5 스택과 큐
__[011] 스택으로 수열 만들기
__[012] 오큰수 구하기
__[013] 카드 게임
__[014] 절댓값 힙 구현하기
05 정렬
_05-1 버블 정렬
__[015] 수 정렬하기 1
__[016] 버블 정렬 프로그램 1
_05-2 선택 정렬
__[017] 내림차순으로 자릿수 정렬하기
_05-3 삽입 정렬
__[018] ATM 인출 시간 계산하기
_05-4 퀵 정렬
__[019] K번째 수 구하기
_05-5 병합 정렬
__[020] 수 정렬하기 2
__[021] 버블 정렬 프로그램 2
_04-6 기수 정렬
__[022] 수 정렬하기 3
06 탐색
_06-1 깊이 우선 탐색
__[023] 연결 요소의 개수 구하기
__[024] 신기한 소수 찾기
__[025] 친구 관계 파악하기
_06-2 백트래킹
__[026] N과 M
__[027] N-Queen 배치하기
__[028] 색종이 붙이기
_06-3 너비 우선 탐색
__[029] DFS와 BFS 프로그램
__[030] 미로 탐색하기
__[031] 트리의 지름 구하기
_06-4 이진 탐색
__[032] 원하는 정수 찾기
__[033] 블루레이 만들기
__[034] 배열에서 K번째 수 찾기
07 그리디
_07-1 그리디 알고리즘
__[035] 동전 개수의 최솟값 구하기
__[036] 카드 정렬하기
__[037] 수를 묶어서 최댓값 만들기
__[038] 회의실 배정하기
__[039] 최솟값을 만드는 괄호 배치 찾기
08 정수론
_08-1 소수 구하기
__[040] 소수 구하기
__[041] 거의 소수 구하기
__[042] 소수 & 팰린드롬 수 중에서 최솟값 찾기
__[043] 제곱이 아닌 수 찾기
_08-2 오일러 피
__[044] 오일러 피 함수 구현하기
_08-3 유클리드 호제법
__[045] 최소 공배수 구하기
__[046] 최대 공약수 구하기
__[047] 칵테일 만들기
_08-4 확장 유클리드 호제법
__[048] Ax + By = C
셋째 마당 Do it! 코딩 테스트 ― 실전 편
09 그래프
_09-1 그래프의 표현
__[049] 특정 거리의 도시 찾기
__[050] 효율적으로 해킹하기
__[051] 이분 그래프 판별하기
__[052] 물의 양 구하기
_09-2 유니온 파인드
__[053] 집합 표현하기
__[054] 여행 계획 짜기
__[055] 거짓말쟁이가 되긴 싫어
_09-3 위상 정렬
__[056] 줄 세우기
__[057] 게임 개발하기
__[058] 임계 경로 구하기
_09-4 다익스트라
__[059] 최단 경로 구하기
__[060] 최소 비용 구하기
__[061] K번째 최단 경로 찾기
_09-5 벨만-포드
__[062] 타임머신으로 빨리 가기
__[063] 세일즈맨의 고민
_09-6 플로이드-워셜
__[064] 가장 빠른 버스 노선 구하기
__[065] 경로 찾기
__[066] 케빈 베이컨의 6단계 법칙
_09-7 최소 신장 트리
__[067] 최소 신장 트리 구하기
__[068] 다리 만들기
__[069] 불우이웃 돕기
10 트리
_10-1 트리 알아보기
__[070] 트리의 부모 찾기
__[071] 리프 노드의 개수 구하기
_10-2 트라이
__[072] 문자열 찾기
_10-3 이진트리
__[073] 트리 순회하기
_10-4 세그먼트 트리
__[074] 구간 합 구하기 3
__[075] 최솟값 찾기 2
__[076] 구간 곱 구하기
_10-5 최소 공통 조상
__[077] 최소 공통 조상 구하기 1
__[078] 최소 공통 조상 구하기 2
11 조합
_11-1 조합 알아보기
__[079] 이항계수 구하기 1
__[080] 이항계수 구하기 2
__[081] 부녀회장이 될 테야
__[082] 다리 놓기
__[083] 조약돌 꺼내기
__[084] 순열의 순서 구하기
__[085] 사전 찾기
__[086] 선물 전달하기
12 동적 계획법
_12-1 동적 계획법 알아보기
__[087] 정수를 1로 만들기
__[088] 퇴사 준비하기
__[089] 이친수 구하기
__[090] 2*N 타일 채우기
__[091] 계단 수 구하기
__[092] 연속된 정수의 합 구하기
__[093] 최장 공통 부분 수열 찾기
__[094] 가장 큰 정사각형 찾기
__[095] 빌딩 순서 구하기
__[096] DDR을 해보자
__[097] 행렬 곱 연산 횟수의 최솟값 구하기
__[098] 외판원의 순회 경로 짜기
__[099] 가장 길게 증가하는 부분 수열 찾기
13 기하
_13-1 기하 알아보기
__[100] 선분 방향 구하기
__[101] 선분의 교차 여부 구하기
__[102] 선분을 그룹으로 나누기
__[103] 다각형의 넓이 구하기
부록 A 시험장에서 살아남는 전략 노트
_A-1 문제를 효과적으로 분석하기
_A-2 올바른 알고리즘 선택하기
_A-3 탈락을 결정짓는 실수 제거하기
찾아보기
IT 취준생들이라면 한 번쯤은 들어본 책이다.
최근에 최신 출제 경향을 반영해 알고리즘 유형과 문제를 보강하여 책이 개편되었다.
알고리즘 기초부터 실전 문제 풀이까지 단계적으로 학습할 수 있도록 구성되어 있어 코딩테스트 입문자나 실력을 다지고 싶은 분들에게 유익한 내용이 가득하다.
이 책은 핵심이론 → 문제분석 → 전략 세우기 → 슈도코드 → 코드 구현이라는 4단계 문제 풀이 방법을 중심으로 구성되어 있어 체계적인 학습에 큰 도움이 된다.
각 챕터마다 알고리즘 이론을 먼저 설명한 뒤 해당 알고리즘에 맞는 문제들을 바로 풀어볼 수 있게 구성되어 있어 배운 내용을 바로 실전에 적용할 수 있다.
특히, 단순히 코드를 작성하는 것이 아니라 문제 분석과 전략 수립, 슈도코드 작성 과정을 강조하고 있다는 점이 인상 깊었다.
이론을 단순히 이해하는 데서 그치지 않고, 실제 문제에 활용하도록 유도해 준다.
이처럼 체계적인 문제 풀이 흐름은 초보자뿐 아니라 실력을 다지고 싶은 학습자에게도 유익하다고 느껴졌다.
백준에서 문제 번호를 검색하면 알고리즘 문제를 직접 풀어볼 수 있다.
학습 계획표도 제공하고 있어서 계획적으로 공부하는 것을 선호한다면 효율적으로 진도를 관리하며 학습할 수 있다.
[책 후기]
책을 처음 펼치자마자 "아! 이거다!" 싶었다.
나는 평소에 무작정 문제부터 풀기보다는, 이론을 먼저 이해하고 그걸 실습이나 응용으로 연결하는 방식으로 공부하는 편이다.
알고리즘도 마찬가지로 이론을 제대로 공부한 다음 관련된 문제를 풀고 싶었지만, 매번 스스로 문제를 선별하고 학습 순서를 설계하는 게 생각보다 부담스러웠다.
그런데 이 책은 그런 내 스타일에 잘 맞았다.
이론 설명이 먼저 나오고 바로 그 내용에 맞는 문제들이 정리돼 있어서 따로 찾을 필요 없이 자연스럽게 실습으로 넘어갈 수 있었다.
그동안 미뤄두기만 했던 알고리즘 공부를 이번에는 꾸준히 이어갈 수 있을 것 같은 기대가 생겼다.
또 알고리즘 문제에 어떻게 접근해야 할지 막막했는데 핵심이론 →문제분석 → 전략 세우기 → 슈도코드 → 코드 구현 이라는 구조로 체계적으로 설명해 줘서 흐름을 잡는 데 큰 도움이 될 거 같다.
단순히 코드만 보여주는 방식이 아니라, 문제를 어떻게 분석하고 어떤 방향으로 풀어 나갈지를 고민하게 만든다.
특히 백준 문제 번호가 같이 나와 있어서, 실제로 문제를 풀어보며 실전 감각까지 기를 수 있다는 점이 만족스러웠다.
혼자 알고리즘 공부를 하면서 방향을 잘 못 잡고 있다면 이 책이 좋은 기준점이 되어줄 수 있을 것 같다.
<자료구조 vs 알고리즘 코딩 테스트>
코딩 테스트를 준비할 때 '자료구조를 공부한 다음에 알고리즘을 봐야 하지 않을까?' 고민하는 분들도 많을 것이다.
하지만 이지스퍼블리싱의 알고리즘 코딩 테스트는 기초적인 자료구조 개념도 함께 설명되어 있어서 자료구조를 따로 끝내지 않아도 알고리즘 학습을 바로 시작할 수 있다.
이지스퍼블리싱의 알고리즘 코딩 테스트의 버블정렬, 삽입정렬 부분이다.
버블정렬과 삽입정렬 같은 기초 정렬 알고리즘이 간단하게 그림으로 설명되어 있다.
특히 코딩 테스트를 준비하는 경우라면 자료구조 개념을 문제를 풀면서 함께 익히는 방식이 효율적일 수 있다.
예를 들어, 스택이나 큐, 해시처럼 자주 등장하는 구조는 직접 문제를 풀다 보면 자연스럽게 익히게 되고 기억에도 오래 남는다.
그래서 '자료구조를 완벽히 끝내야만 알고리즘을 시작할 수 있다'라는 부담보다는 기초 개념을 가볍게 훑고 알고리즘 문제 풀이와 병행하는 방법도 충분히 효과적인 방법이라고 생각한다.
그렇다고 해서 '자료구조'를 따로 공부할 필요가 없다는 것은 아니다.
좀 더 집중적으로 이론을 탄탄하게 다지고 싶다면 이지스퍼블리싱의 '자료구조와 함께 배우는 알고리즘 입문'을 먼저 공부한 후 '알고리즘 코딩 테스트'로 문제 풀이 훈련을 이어가는 것도 매우 좋은 방법이다.
이지스퍼블리싱의 자료구조와 함께 배우는 알고리즘 입문의 버블정렬과 삽입정렬이 자세히 설명되어 있다.
<정리>
- 빠르게 코딩 테스트를 준비 : 알고리즘 코딩 테스트
- 시간적 여유를 가지고 깊이 공부 : 자료구조 → 알고리즘 코딩 테스트
자신의 학습 스타일과 목표에 따라 유연하게 선택하면 된다.
어떤 방향을 택하든 이 두 책은 좋은 학습 짝꿍이 되어줄 거라고 생각된다.
[추천 대상]
- 코딩 테스트를 준비하는 취업 준비생 / 이직 준비 중인 개발자
- 알고리즘 기본기를 잡고 싶은 사람
- 이직을 준비하는 개발자
[마무리]
알고리즘 공부를 해야겠다는 생각은 늘 있었지만, 막상 어디서부터 어떻게 시작해야 할지 막막했다.
이 책은 그런 고민을 안고 있던 내게 방향을 잡아줄 좋은 길잡이다.
단순히 코드를 외우는 것이 아닌 문제를 분석하고 전략을 세우며 슈도코드를 거쳐 실제 구현까지 이어지는 4단계 문제 풀이 흐름이 많은 도움이 될 것 같다.
자료구조와 알고리즘 사이에서 고민하고 있던 사람이라면 이 책으로 바로 시작해도 충분하지 않을까 싶다.
필요한 자료구조 개념이 함께 설명돼 있어서 학습 흐름이 끊기지 않고 자연스럽게 실습으로 이어질 수 있다.
무엇보다 빠르게 실력을 키우고 싶은 사람에게는 실전 중심으로 구성된 이 한 권이 꽤 든든한 서포터가 되어줄 수 있을 거라 생각한다.
개인적으로는 알고리즘 문제를 JS로 풀고 싶은 사람도 많을 텐데 JS 버전도 출간되면 좋겠다는 생각이 들었다.
알고리즘이 막막하게 느껴질 때, 시작이 어렵게만 느껴질 때, 이 책은 그 시작점을 만들어줄 수 있는 좋은 서포터가 되어줄 거라 믿는다.
알고리즘 문제를 풀다 어려운 문제가 나오면 강의를 들을 수 있다.

강의 : https://www.inflearn.com/course/두잇-알고리즘-코딩테스트-자바
유튜브 : https://www.youtube.com/@codingtest/featured
깃허브 : https://github.com/doitcodingtest/java
그리고 코딩 테스트 스터디도 운영되고 있다.
혼자 공부하기 벅찰 때는 같이 문제를 풀고 의견을 나누면서 실력을 키울 수 있으니 참여하는 것도 좋은 방법이다.

코딩 스터디 : https://cafe.naver.com/doitstudyroom
잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊
댓글과 좋아요는 큰 힘이 됩니다!

'T-LOG > ㄱ-LOG' 카테고리의 다른 글
[ㄱ-LOG] 한빛미디어 베타 리딩 참여 후기 / 패턴으로 익히고 설계로 완성하는 리액트 / 리액트 안티패턴 (2) | 2025.02.10 |
---|---|
[ㄱ-LOG] 2024 회고록 (2) | 2024.12.31 |