확장메뉴
주요메뉴


소득공제 베스트셀러
미리보기 공유하기

코딩 테스트를 위한 자료 구조와 알고리즘 with C++

: 67개 문제 풀이로 익히자!

도서 제본방식 안내이동
리뷰 총점8.2 리뷰 7건 | 판매지수 4,914
베스트
프로그래밍 언어 71위 | IT 모바일 top100 1주
정가
32,000
판매가
28,800 (10% 할인)
YES포인트
소중한 당신에게 5월의 선물 - 산리오 3단 우산/디즈니 우산 파우치/간식 접시 머그/하트 이중 머그컵
월간 개발자 2022년 5월호
내일은 개발자! 코딩테스트 대비 도서전
(핫팩 증정!) 길벗 IT브랜드전
5월 전사
5월 쇼핑혜택
1 2 3 4 5

품목정보

품목정보
출간일 2020년 12월 08일
쪽수, 무게, 크기 552쪽 | 1049g | 183*235*22mm
ISBN13 9791165213794
ISBN10 1165213796

책소개 책소개 보이기/감추기

67개 문제 풀이로 익히는 C++ 자료 구조와 알고리즘!
코딩 테스트 준비 및 최신 C++ 문법으로 알고리즘을 학습하자!


C++ 자료 구조부터 그리디 알고리즘, 분할 정복 알고리즘, 그래프 알고리즘, 동적 계획법과 같은 다양한 알고리즘을 설명한다. 또한, 전통적인 자료 구조와 C++ STL 클래스 구현 사이의 관계를 설명해 주어진 문제에 가장 적합한 자료 구조를 선택할 수 있도록 도와준다. 이론을 익힌 후 44개 연습 문제와 23개 실습 문제로 직접 코딩해보며 체계적으로 학습할 수 있게 구성되어 있다. 코딩 테스트를 준비하는 취업 준비생과 최신 C++ 문법으로 알고리즘을 새로 공부하려는 사람들에게 추천한다.

목차 목차 보이기/감추기

1장 리스트, 스택, 큐
1.1 들어가며
1.2 연속된 자료 구조와 연결된 자료 구조
__1.2.1 연속된 자료 구조
__1.2.2 연결된 자료 구조
__1.2.3 비교
__1.2.4 C 스타일 배열의 제약 사항
1.3 std::array
__1.3.1 연습 문제 1: 동적 크기 배열 구현하기
__1.3.2 연습 문제 2: 빠르고 범용적인 데이터 저장 컨테이너 만들기
1.4 std::vector
__1.4.1 std::vector - 가변 크기 배열
__1.4.2 std::vector 할당자
1.5 std::forward_list
__1.5.1 std::forward_list에서 원소 삽입과 삭제
__1.5.2 std::forward_list의 기타 멤버 함수
__1.5.3 연습 문제 3: 연결 리스트에서 remove_if() 함수를 이용한 조건부 원소 삭제
1.6 반복자
__1.6.1 연습 문제 4: 다양한 반복자에서 이동하기
__1.6.2 연습 문제 5: 기본적인 사용자 정의 컨테이너 만들기
__1.6.3 실습 문제 1: 음악 재생 목록 구현하기
1.7 std::list
__1.7.1 std::list 멤버 함수
__1.7.2 연습 문제 6: std::list의 삽입 또는 삭제 함수 사용하기
__1.7.3 양방향 반복자
__1.7.4 반복자 무효화
__1.7.5 실습 문제 2: 카드 게임 시뮬레이션
1.8 std::deque
__1.8.1 덱의 구조
1.9 컨테이너 어댑터
__1.9.1 std::stack
__1.9.2 std::queue
__1.9.3 std::priority_queue
__1.9.4 어댑터 반복자
1.10 벤치마킹
__1.10.1 실습 문제 3: 사무실 공유 프린터의 인쇄 대기 목록 시뮬레이션
1.11 나가며

2장 트리, 힙, 그래프
2.1 들어가며
2.2 비선형 문제
__2.2.1 계층적 문제
__2.2.2 순환 종속성
2.3 트리: 상하 반전된 형태
__2.3.1 연습 문제 7: 조직도 구조 만들기
__2.3.2 트리 순회
__2.3.3 연습 문제 8: 레벨 순서 순회 구현하기
2.4 다양한 트리 구조
__2.4.1 이진 검색 트리
__2.4.2 트리 연산의 시간 복잡도
__2.4.3 연습 문제 9: BST 구현하기
__2.4.4 균형 트리
__2.4.5 N-항 트리
__2.4.6 실습 문제 4: 파일 시스템 자료 구조 만들기
2.5 힙
__2.5.1 힙 연산
__2.5.2 연습 문제 10: 중앙값 구하기
__2.5.3 실습 문제 5: 힙을 이용한 데이터 리스트 병합
2.6 그래프
__2.6.1 인접 행렬로 그래프 표현하기
__2.6.2 연습 문제 11: 그래프를 구성하고 인접 행렬로 표현하기
__2.6.3 인접 리스트로 그래프 표현하기
__2.6.4 연습 문제 12: 그래프를 구성하고 인접 리스트로 표현하기
2.7 나가며

3장 해시 테이블과 블룸 필터
3.1 들어가며
3.2 해시 테이블
__3.2.1 해싱
__3.2.2 연습 문제 13: 정수 값을 저장하는 간단한 사전
3.3 해시 테이블에서 충돌
__3.3.1 체이닝
__3.3.2 연습 문제 14: 체이닝을 사용하는 해시 테이블
__3.3.3 열린 주소 지정
__3.3.4 뻐꾸기 해싱
__3.3.5 연습 문제 15: 뻐꾸기 해싱
3.4 C++ 해시 테이블
__3.4.1 연습 문제 16: STL에서 제공하는 해시 테이블
__3.4.2 실습 문제 6: 긴 URL을 짧은 URL로 매핑하기
3.5 블룸 필터
__3.5.1 연습 문제 17: 블룸 필터 만들기
__3.5.2 실습 문제 7: 이메일 주소 중복 검사
3.6 나가며

4장 분할 정복
4.1 들어가며
4.2 이진 검색
__4.2.1 연습 문제 18: 이진 검색 구현 및 성능 평가
__4.2.2 실습 문제 8: 예방 접종
4.3 분할 정복 이해하기
4.4 분할 정복을 이용한 정렬 알고리즘
__4.4.1 병합 정렬
__4.4.2 연습 문제 19: 병합 정렬
__4.4.3 퀵 정렬
__4.4.4 연습 문제 20: 퀵 정렬
__4.4.5 실습 문제 9: 부분 정렬
__4.4.6 선형 시간 선택
__4.4.7 연습 문제 21: 선형 시간 선택
4.5 분할 정복 기법과 C++ 표준 라이브러리 함수
4.6 맵리듀스: 더 높은 추상화 레벨의 분할 정복 기법
__4.6.1 맵과 리듀스 추상화
__4.6.2 연습 문제 22: C++ 표준 라이브러리를 이용하여 맵과 리듀스 구현하기
__4.6.3 맵리듀스 프레임워크를 이용한 부분 통합
__4.6.4 연습 문제 23: 맵리듀스를 사용하여 소수 확인하기
__4.6.5 실습 문제 10: 맵리듀스를 이용하여 워드카운트 구현하기
4.7 나가며

5장 그리디 알고리즘
5.1 들어가며
5.2 기본적인 그리디 알고리즘
__5.2.1 최단 작업 우선 스케줄링
__5.2.2 연습 문제 24: 최단 작업 우선 스케줄링
5.3 배낭 문제
__5.3.1 0-1 배낭 문제
__5.3.2 분할 가능 배낭 문제
__5.3.3 연습 문제 25: 분할 가능 배낭 문제
__5.3.4 실습 문제 11: 작업 스케줄링 문제
__5.3.5 그리디 알고리즘의 요구 조건
__5.3.6 최소 신장 트리 문제
__5.3.7 디스조인트-셋 자료 구조
__5.3.8 연습 문제 26: 크루스칼 MST 알고리즘
5.4 그래프 컬러링
__5.4.1 연습 문제 27: 그리디 그래프 컬러링
__5.4.2 실습 문제 12: 웰시-포웰 알고리즘
5.5 나가며

6장 그래프 알고리즘 I
6.1 들어가며
6.2 그래프 순회 문제
__6.2.1 너비 우선 탐색
__6.2.2 연습 문제 28: BFS 구현하기
__6.2.3 깊이 우선 탐색
__6.2.4 연습 문제 29: DFS 구현하기
__6.2.5 실습 문제 13: 이분 그래프 판별하기
6.3 프림의 최소 신장 트리 알고리즘
__6.3.1 연습 문제 30: 프림 알고리즘 구현하기
6.4 다익스트라 최단 경로 알고리즘
__6.4.1 연습 문제 31: 다익스트라 알고리즘 구현하기
__6.4.2 실습 문제 14: 뉴욕에서 최단 경로 찾기
6.5 나가며

7장 그래프 알고리즘 II
7.1 들어가며
7.2 최단 경로 문제 다시 살펴보기
7.3 벨만-포드 알고리즘
__7.3.1 연습 문제 32: 벨만-포드 알고리즘 구현하기
7.4 벨만-포드 알고리즘과 음수 가중치 사이클
__7.4.1 연습 문제 33: 음수 가중치 사이클 찾기
__7.4.2 실습 문제 15: 욕심쟁이 로봇
7.5 존슨 알고리즘
__7.5.1 연습 문제 34: 존슨 알고리즘 구현하기
__7.5.2 실습 문제 16: 무작위 그래프 통계
7.6 강한 연결 요소
__7.6.1 방향 그래프와 무방향 그래프에서 연결성
7.7 코사라주 알고리즘
__7.7.1 연습 문제 35: 코사라주 알고리즘 구현하기
__7.7.2 실습 문제 17: 미로-순간이동 게임
7.8 적절한 방법 선택하기
7.9 나가며

8장 동적 계획법 I
8.1 들어가며
8.2 동적 계획법이란?
8.3 메모이제이션: 하향식 접근 방법
8.4 타뷸레이션: 상향식 접근 방법
8.5 부분집합의 합 문제
__8.5.1 1단계: 동적 계획법 필요조건 분석하기
__8.5.2 2단계: 기저 조건과 상태 정의하기
__8.5.3 2-(a)단계: 전수 조사
__8.5.4 연습 문제 36: 전수 조사 방식으로 부분집합의 합 문제 풀기
__8.5.5 2-(b)단계: 최적화 적용하기 - 백트래킹
__8.5.6 연습 문제 37: 백트래킹을 사용하여 부분집합의 합 문제 풀기
__8.5.7 3단계: 메모이제이션
__8.5.8 연습 문제 38: 메모이제이션을 이용하여 부분집합의 합 문제 풀기
__8.5.9 4단계: 타뷸레이션
__8.5.10 연습 문제 39: 타뷸레이션을 이용하여 부분집합의 합 문제 풀기
__8.5.11 실습 문제 18: 여행 경로
8.6 문자열과 시퀀스에 대한 동적 계획법
__8.6.1 최장 공통 부분 시퀀스 문제
__8.6.2 연습 문제 40: 전수 조사 방식으로 최장 공통 부분 시퀀스 문제 풀기
__8.6.3 최적화 첫 단계: 최적 부분 구조 찾기
__8.6.4 실습 문제 19: 메모이제이션을 이용하여 최장 공통 부분 시퀀스 찾기
__8.6.5? 하향식에서 상향식으로 바꾸기: 메모이제이션 방식을 타뷸레이션 방식으로 바꾸기
__8.6.6 실습 문제 20: 타뷸레이션을 이용하여 최장 공통 부분 시퀀스 찾기
8.7 실습 문제 21: 멜로디 순열
8.8 나가며

9장 동적 계획법 II
9.1 들어가며
9.2 P와 NP
9.3 부분집합의 합 문제 다시 보기
9.4 배낭 문제
__9.4.1 0-1 배낭 문제 - 부분집합의 합 문제 확장하기
__9.4.2 연습 문제 41: 0-1 배낭 문제
__9.4.3 무한 개수 배낭 문제
__9.4.4 상태 공간 축소
__9.4.5 연습 문제 42: 무한 개수 배낭 문제
__9.4.6 실습 문제 22: 최대 이익
9.5 그래프와 동적 계획법
__9.5.1 벨만-포드 알고리즘 다시 보기
__9.5.2 동적 계획법으로 최단 경로 문제 다루기
__9.5.3 연습 문제 43: 단일 시작 최단 경로(메모이제이션)
__9.5.4 모든 쌍 최단 경로
__9.5.5 플로이드-워셜 알고리즘
__9.5.6 연습 문제 44: 플로이드-워셜 알고리즘 구현하기
__9.5.7 실습 문제 23: 도로 건설
9.6 나가며

부록 실습 문제 풀이

저자 소개 (4명)

책 속으로 책속으로 보이기/감추기

언제나 그렇듯이, 세상은 변하고 기술은 진화합니다. IT 분야에서도 끊임없이 새로운 기술이 생겨나고, 예전에는 낯설던 신기술이 어느덧 누구나 알고 있어야 하는 기본 개념으로 자리잡아가고 있습니다. C++ 언어도 C++11, C++14, C++17 등의 이름과 함께 새로운 문법이 추가되고 있고, 데이터 구조와 알고리즘 분야에서도 좀 더 효율적이고 확장성 있는 이론이 보편화되고 있습니다. 평생 공부하는 사람의 입장에서 벅찬 느낌마저 듭니다.

과거에는 유명 외국계 IT 회사에서만 실시하던 코딩 테스트가 이제는 많은 국내 회사에서도 시행되고 있습니다. 연결 리스트 구현 같은 단순한 형태의 질문이 아니라 이미 구현되어 있는 C++ STL 자료 구조 컨테이너와 알고리즘 함수를 활용하여 고차원적인 문제를 풀 수 있는지를 테스트하는 것이 현실입니다. 이 책은 전통적인 자료 구조와 C++ STL 클래스 구현 사이의 관계를 설명함으로써 주어진 문제에 가장 적합한 자료 구조를 선택할 수 있도록 도와줍니다. 또한 분할 정복, 그래프 탐색, 최단 경로, 동적 계획법 등 최근 코딩 테스트에서 자주 나오는 문제를 C++ 언어를 사용하여 효율적으로 해결하는 방법을 제시합니다. 이 책은 C++ 언어로 코딩 테스트를 준비하는 취업 준비생과 최신 C++ 문법으로 알고리즘을 새로 공부하는 분들께 매우 적합한 학습서가 될 것입니다.

---「옮긴이의 말」중에서

출판사 리뷰 출판사 리뷰 보이기/감추기

이론과 문제 풀이를 한 번에!
C++ 자료 구조에서 그래프 알고리즘, 동적 계획법까지!

다양한 알고리즘 이론을 배우고 최신 C++로 구현해보자

C++ 자료 구조부터 그리디 알고리즘, 분할 정복 알고리즘, 그래프 알고리즘, 동적 계획법과 같은 다양한 알고리즘을 설명한다. 전통적인 자료 구조와 C++ STL 클래스 구현 사이의 관계를 설명해 주어진 문제에 가장 적합한 자료 구조를 선택할 수 있도록 도와준다. 책의 모든 코드는 C++ 14로 구현되어 있다.

44개 연습 문제와 23개 실습 문제로 익히자
다양한 알고리즘을 설명하기 위해 단계별 문제 풀이로 직접 코딩해보며 실용적으로 익힐 수 있게 했다. 서로 다른 자료 구조가 이론적으로는 비슷한 성능으로 동작해야 하지만 실제 컴퓨터에서 실행될 때는 매우 큰 차이가 발생할 수 있다는 것을 연습 문제 풀이로 보여준다. 또한, 익힌 내용은 실습 문제로 한 번 더 정리할 수 있게 했다. 코딩 테스트를 준비하는 취업 준비생과 최신 C++ 문법으로 알고리즘을 새로 공부하려는 사람들에게 추천한다.

자주 출제되는 주요 알고리즘 위주로 배우자
코딩 테스트도 전략이 필요하다. 다양한 알고리즘이 있지만, 그중 코딩 테스트에 자주 출제되는 주요 알고리즘으로 구성했다. 분할 정복, 그래프 탐색, 최단 경로, 동적 계획법 등 많이 출제되는 알고리즘에 집중하자.

회원리뷰 (7건) 리뷰 총점8.2

혜택 및 유의사항?
구매 잘 짜여진 C++ 알고리즘책 내용 평점4점   편집/디자인 평점5점 YES마니아 : 로얄 금****리 | 2021.07.28 | 추천0 | 댓글0 리뷰제목
요즘 실용 알고리즘 서적은 Python이 대세이긴 하지만, 흔치 않은 C++ 책입니다. 게다가 C++ 스타일은 모던 C++ 스타일입니다. 소스를 보면 코딩 인터뷰나 문제 풀이 알고리즘 구현할때 굳이 temlate< > 를 써야되나 싶기도 하지만, template 연습한다는 마음으로 보고 있습니다.  설명도 잘되어 있는 편이고요, 굳이 코딩 테스트를 준비한다기 보다는 C++로 알고리즘을 구;
리뷰제목

요즘 실용 알고리즘 서적은 Python이 대세이긴 하지만, 흔치 않은 C++ 책입니다. 게다가 C++ 스타일은 모던 C++ 스타일입니다. 소스를 보면 코딩 인터뷰나 문제 풀이 알고리즘 구현할때 굳이 temlate< > 를 써야되나 싶기도 하지만, template 연습한다는 마음으로 보고 있습니다. 

설명도 잘되어 있는 편이고요, 굳이 코딩 테스트를 준비한다기 보다는 C++로 알고리즘을 구현한다는 의미로 받아드리면 좋을 것 같습니다.

댓글 0 이 리뷰가 도움이 되었나요? 공감 0
코딩 테스트를 위한 자료 구조와 알고리즘 with C++ 내용 평점5점   편집/디자인 평점5점 YES마니아 : 로얄 스타블로거 : 수퍼스타 m******o | 2021.06.10 | 추천0 | 댓글0 리뷰제목
최근 대다수의 국내 유명 IT 대기업에서 채용절차에 코딩 테스트를 적극적으로 도입함에 따라 시중에 다양한 코딩 테스트 관련 서적들을 볼 수 있는데, 본 서적은 근래에는 보기드문 C++을 이용한 자료구조 및 알고리즘을 다루는 책입니다. 단순히 코딩 테스트 언어로 C++을 사용하는 정도가 아니라 C++ 전문 서적이라고 생각될 정도로 STL, 템플릿을 본격적으로 심도있게 다루고 있습니;
리뷰제목

최근 대다수의 국내 유명 IT 대기업에서 채용절차에 코딩 테스트를 적극적으로 도입함에 따라 시중에 다양한 코딩 테스트 관련 서적들을 볼 수 있는데, 본 서적은 근래에는 보기드문 C++을 이용한 자료구조 및 알고리즘을 다루는 책입니다. 단순히 코딩 테스트 언어로 C++을 사용하는 정도가 아니라 C++ 전문 서적이라고 생각될 정도로 STL, 템플릿을 본격적으로 심도있게 다루고 있습니다. 사실 원제인 C++ Data Structures and Algorithm Design Principles 를 생각하면 한국어판의 제목이 불필요한 기대를 하게 만드는 요소가 있다고 생각되고, 왜 원 제목 그대로 출판하지 않았는지 조금 아쉬운 부분이기도 합니다.

책의 대상 독자 항목에 C++14 표준에 익숙하다고 적어놓은 만큼, 언어에 대한 기본적인 내용은 전혀 다루지 않고 최신 C++문법과 템플릿 메타프로그래밍을 가차없이 전개하고 있어 익숙하지 않은 분이라면 어려움을 느낄 수 있을것 같습니다. 그래도 최근 시중의 알고리즘 및 코딩테스트 서적이 파이썬 같은 고급 언어 위주로 쓰여진 것이 대부분이라 모던 C++로 자료구조와 알고리즘을 다루는 흔치 않은 서적인 만큼 C++ 로 자료구조와 알고리즘에 대해 다루는 것에 관심이 있거나 필요했던 분이라면 아주 가뭄 속의 단비 같은 책이 될 거라 생각됩니다. 특히 단순 설명에 그치지 않고 다양한 연습 문제와 실습 문제를 제공하고 있어 한국어판 제목 대로 코딩 테스트를 준비하는 데에도 실질적인 도움이 될 거라 생각됩니다. 다만 C++에 대한 충분한 지식과 경험이 없는 분이라면 참고할 다른 C++ 서적을 같이 보는 것을 추천합니다.

댓글 0 이 리뷰가 도움이 되었나요? 공감 0
제목을 입력해주[리뷰] 코딩 테스트를 위한 자료 구조와 알고리즘 with C++세요 내용 평점4점   편집/디자인 평점4점 푸***리 | 2021.06.08 | 추천0 | 댓글0 리뷰제목
코딩테스트를 위해 가장 많이 준비하는 언어는 무엇일까?     출처: http://www.codingworldnews.com/news/articleView.html?idxno=2061 압도적으로 C++이 44%를 차지하고 있고, 2위로는 파이썬이 차지하고 있다. C++은 최근의 코딩테스트가 기업에서 도입되면;
리뷰제목

코딩테스트를 위해 가장 많이 준비하는 언어는 무엇일까?

 

 


출처: http://www.codingworldnews.com/news/articleView.html?idxno=2061



압도적으로 C++이 44%를 차지하고 있고, 2위로는 파이썬이 차지하고 있다. C++은 최근의 코딩테스트가 기업에서 도입되면서 많이 쓰인 다기보단 예전 미국에서부터 개발자를 채용하기 위해 많이 사용해온 언어이다. 또한 각종 올림피아드 대회, 코딩대회에서도 많이 쓰여왔다. 또한 C++은 각 시스템의 핵심적 모듈기능을 많이 담당해오고 있기 때문에, 단순 코딩테스트를 목적 보단 학교에서 배운 자료 C++ 자료 구조부터 그리디 알고리즘, 분할 정복 알고리즘, 그래프 알고리즘, 동적 계획법과 같은 다양한 알고리즘을 설명한다. 

자료 구조와 C++ STL 클래스 구현 사이의 관계를 설명해 주어진 문제에 가장 적합한 자료 구조를 선택할 수 있도록 도와준다. 챕터 별로 그림을 통한 설명도 잘 되어있고, 이론을 익힌 후 44개 연습 문제와 23개 실습 문제로 직접 코딩해보며 체계적으로 학습할 수 있게 구성되어 있다. 

길벗 출판사에서 운영하는 github 사이트( https://github.com/gilbutITbook/080239 ) 에 챕터별 예제소스와 실전문제 소스가 공유되어 있어서 각자의 개발환경에 맞추어 다운받거나 셋팅해서 step by step으로 확인 가능하다.
근데 이 경우 직접 프로젝트(vsc 2019기준)를 구성하여 소스를 돌려봐야하는데, 역자의 github사이트에 visual studio 2019 기준에 맞추어 생성한 개발환경도 구성 가능하다. ( https://github.com/sunkyoo/CPP-Data-Structures-and-Algorithms )
 

 

 


완전 C++에 대해 모르는 초보자를 대상으로는 접근하기 어렵다고 생각한다. 코딩 테스트를 준비하는 취업 준비생과 최신 C++ 문법으로 알고리즘을 새로 공부하려는 사람들에게 추천한다. 어느정도 기본 개념을 알아야 한다고 생각하고, 디버깅해보면서 공부하기에 좋은 내용이라고 생각했다.



출처: https://gopae02.tistory.com/156 [bluish wolf]

댓글 0 이 리뷰가 도움이 되었나요? 공감 0

한줄평 (1건) 한줄평 총점 10.0

혜택 및 유의사항 ?
평점5점
개발쟁이의 호승심을 자극하는 예제들이 마음에 들었습니다!
이 한줄평이 도움이 되었나요? 공감 0
YES마니아 : 로얄 아***인 | 2021.06.08
  •  쿠폰은 결제 시 적용해 주세요.
1   28,800
뒤로 앞으로 맨위로 aniAlarm