메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

오래된 내 정보 속 옥의 티를 찾아라(2022.9.22~12.31) / 회원정보 UPDATE하고 선물도 받고!

이것이 자료구조+알고리즘이다 with C 언어

한빛미디어

집필서

판매중

  • 저자 : 박상현
  • 출간 : 2022-08-03
  • 페이지 : 664 쪽
  • ISBN : 9791169210034
  • 물류코드 :11003
초급 초중급 중급 중고급 고급
5점 (25명)
좋아요 : 31

자료구조+알고리즘의 개념부터 실습까지 

포기 없이 즐겁게 배우자!

 

자료구조와 알고리즘은 IT 기업의 면접과 코딩 테스트 통과를 위한 필수 역량입니다. 알고리즘을 배워두면 단순히 취업뿐 아니라 더 좋은 개발자가 되는 데 큰 도움이 됩니다. 하지만 자료구조와 알고리즘은 배우기 어려우며 심지어 재미도 없다 보니 많은 개발자가 중도에 학습을 포기합니다. 『이것이 자료구조+알고리즘이다』는 독자가 마지막 페이지까지 읽도록 하는 것에 목표를 두었습니다.

처음 배우는 사람의 눈높이에 맞춰 리스트부터 백트래킹까지 자주 사용되는 자료구조와 알고리즘 개념을 위트 넘치는 이야기로 쉽게 설명합니다. 보기만 해도 헉 소리가 나는 복잡한 수식은 최소화하고 이해에 꼭 필요한 수식만 담았습니다. 또한 작동 원리를 단번에 이해할 수 있게 도와주는 다양한 그림과 바로 실행하고 확인할 수 있는 108개 소스 코드를 예제로 제공해 알고리즘의 얼개를 완벽히 이해할 수 있도록 구성했습니다.

『이것이 자료구조+알고리즘이다』와 함께 자료구조와 알고리즘의 주요 개념을 포기 없이 끝까지 배워봅시다!

 

 

 

700px_이것이 자료구조+알고리즘이다 상세 페이지.jpg

박상현 저자

박상현

 

반도체 공정 자동화, 통신 장비, 무기 체계, 사이버 시큐리티 분야에서 SW를 개발해 왔으며 현재는 캘리포니아 소재 스타트업에서 소프트웨어 엔지니어로 근무 중이다. 2010년 대한민국학술원 우수학술도서로 선정된 『뇌를 자극하는 알고리즘』(2009) 외에 『이것이 C#이다(개정판)』(2021), 『뇌를 자극하는 파이썬 3』(2016) 등을 집필했으며, 2020년 세종도서 학술부문에 선정된 『그로킹 딥러닝』(2019)를 번역했다. 

__지은이의 말

__이 책의 구성

__학습 로드맵

 

Chapter 00 알아두면 쓸 데 있는 자료구조와 알고리즘

_0.1 자료구조

_0.2 알고리즘

_0.3 C 언어로 메모리를 다루는 방법 

__0.3.1 포인터 복습

__0.3.2 구조체 복습 

__0.3.3 메모리 레이아웃 복습 

__0.3.4 스택에서 데이터를 다루는 방법

__0.3.5 힙에서 데이터를 다루는 방법 

 

 

Part 01 자료구조

 

Chapter 01 리스트

_1.1 리스트 ADT 

__1.1.1 리스트의 개념 

__1.1.2 리스트와 배열 비교 

_1.2 링크드 리스트

__1.2.1 링크드 리스트의 노드 표현 

__1.2.2 링크드 리스트의 주요 연산

___Vitamin Quiz 1-1 

__1.2.3 링크드 리스트 예제 프로그램

__1.2.4 링크드 리스트의 장단점

___Vitamin Quiz 1-2 

_1.3 더블 링크드 리스트

__1.3.1 더블 링크드 리스트의 주요 연산

__1.3.2 더블 링크드 리스트 예제 프로그램

___Vitamin Quiz 1-3

_1.4 환형 링크드 리스트

__1.4.1 환형 더블 링크드 리스트의 주요 연산

__1.4.2 환형 더블 링크드 리스트 예제 프로그램 

_연습문제

 

Chapter 02 스택

_2.1 스택 ADT

__2.1.1 스택의 개념

___Vitamin Quiz 2-1

__2.1.2 스택의 핵심 기능: 삽입과 제거 연산

_2.2 배열로 구현하는 스택

__2.2.1 배열 기반 스택과 스택의 노드 표현

__2.2.2 배열 기반 스택의 기본 연산

__2.2.3 배열 기반 스택 예제 프로그램

___Vitamin Quiz 2-2

_2.3 링크드 리스트로 구현하는 스택

__2.3.1 링크드 리스트 기반 스택과 스택의 노드 표현

__2.3.2 링크드 리스트 기반 스택의 기본 연산 

__2.3.3 링크드 리스트 기반 스택 예제 프로그램 

_2.4 스택의 응용: 사칙 연산 계산기

__2.4.1 수식의 중위 표기법과 후위 표기법

__2.4.2 후위 표기식을 계산하는 알고리즘

__2.4.3 중위 표기식을 후위 표기식으로 바꾸는 알고리즘

__2.4.4 사칙 연산 계산기 예제 프로그램

_연습문제

 

Chapter 03 큐

_3.1 큐 ADT 

__3.1.1 큐의 개념 

__3.1.2 큐 ADT의 핵심 기능: 삽입과 제거 연산 

_3.2 순환 큐

__3.2.1 공백 상태와 포화 상태

__3.2.2 순환 큐의 기본 연산

__3.2.3 순환 큐 예제 프로그램

_3.3 링크드 큐

__3.3.1 링크드 큐의 기본 연산

__3.3.2 링크드 큐 예제 프로그램

_연습문제

 

Chapter 04 트리

_4.1 트리 ADT

__4.1.1 트리의 개념

__4.1.2 트리의 구성 요소

__4.1.3 트리 표현 방법

__4.1.4 노드 표현 방법

__4.1.5 트리의 기본 연산

__4.1.6 트리 예제 프로그램

___Vitamin Quiz 4-1

_4.2 이진 트리

__4.2.1 이진 트리의 종류

__4.2.2 이진 트리의 순회

__4.2.3 이진 트리의 기본 연산

__4.2.4 이진 트리 예제 프로그램

_4.3 수식 트리

__4.3.1 수식 트리 구축 방법

__4.3.2 수식 트리의 구현 

__4.3.3 수식 트리 예제 프로그램

_4.4 분리 집합

__4.4.1 분리 집합 표현

__4.4.2 분리 집합의 기본 연산

__4.4.3 분리 집합 예제 프로그램

_연습문제

 

 

Part 02 알고리즘

 

Chapter 05 정렬

_5.1 정렬 알고리즘의 개요 

_5.2 버블 정렬 

__5.2.1 버블 정렬의 성능 측정

__5.2.2. 버블 정렬 예제 프로그램

___Vitamin Quiz 5-1

_5.3 삽입 정렬

__5.3.1 삽입 정렬의 성능 측정

__5.3.2 삽입 정렬 예제 프로그램

_5.4 퀵 정렬

__5.4.1 퀵 정렬 사용 전 해결해야 하는 2가지 문제

__5.4.2 퀵 정렬 예제 프로그램

__5.4.3 퀵 정렬의 성능 측정

_5.5 C 언어 표준 라이브러리의 퀵 정렬 함수: qsort( )

__5.5.1 qsort( ) 함수 예제 프로그램

___Vitamin Quiz 5-2

__5.5.2 qsort( ) 응용 문제 

_연습문제

 

Chapter 06 탐색

_6.1 탐색 알고리즘의 개요

_6.2 순차 탐색

__6.2.1 전진 이동법

___Vitamin Quiz 6-1

__6.2.2 전위법

___Vitamin Quiz 6-2

__6.2.3 계수법

___Vitamin Quiz 6-3

_6.3 이진 탐색

__6.3.1 이진 탐색의 성능 측정

__6.3.2 이진 탐색의 구현

__6.3.3 이진 탐색 예제 프로그램: 두 번째 최종 시험 문제 

__6.3.4 C 언어 표준 라이브러리의 이진 탐색 함수: bsearch( )

__6.3.5 bsearch( ) 함수 예제 프로그램

_6.4 이진 탐색 트리 

__6.4.1 이진 탐색 트리 표현 

__6.4.2 이진 탐색 트리의 기본 연산 

__6.4.3 이진 탐색 트리 예제 프로그램

__6.4.4 이진 탐색 트리의 문제점

_6.5 레드 블랙 트리

__6.5.1 레드 블랙 트리의 구현 규칙

__6.5.2 레드 블랙 트리의 기본 연산

__6.5.3 레드 블랙 트리 예제 프로그램 

_연습문제


Chapter 07 우선순위 큐와 힙

_7.1 우선순위 큐

__7.1.1 우선순위 큐의 삽입/제거 연산

__7.1.2 우선순위 큐의 구현

_7.2 힙

__7.2.1 힙의 삽입 연산

__7.2.2 힙의 최솟값 삭제 연산

__7.2.3 힙의 구현

__7.2.4 힙 예제 프로그램

_7.3 힙 기반 우선순위 큐의 구현

_연습문제

 

Chapter 08 해시 테이블

_8.1 해시 테이블의 개요

__8.1.1 해시

__8.1.2 해시 테이블

_8.2 해시 함수

__8.2.1 나눗셈법

__8.2.2 자릿수 접기

__8.2.3 해시 함수의 한계: 충돌

_8.3 충돌 해결 기법

__8.3.1 체이닝

__8.3.2 개방 주소법

_연습문제

 

Chapter 09 그래프

_9.1 그래프의 개요

__9.1.1 그래프의 탄생 배경: 오일러의 문제 해결 도구 

__9.1.2 그래프의 정의

___Vitamin Quiz 9-1

_9.2 그래프 표현 방법 

__9.2.1 인접 행렬

__9.2.2 인접 리스트 

___Vitamin Quiz 9-2

_9.3 그래프 순회 기법

__9.3.1 깊이 우선 탐색 

__9.3.2 너비 우선 탐색

__9.3.3 그래프 순회 예제 프로그램

_9.4 위상 정렬

__9.4.1 위상 정렬의 동작 방식

__9.4.2 위상 정렬 예제 프로그램 

_9.5 최소 신장 트리

__9.5.1 프림 알고리즘 

__9.5.2 크루스칼 알고리즘

__9.5.3 최소 신장 트리 예제 프로그램

_9.6 최단 경로 탐색: 데이크스트라 알고리즘

__9.6.1 데이크스트라 알고리즘의 개념 

__9.6.2 데이크스트라 알고리즘 예제 프로그램

_연습문제

 

Chapter 10 문자열 탐색

_10.1 문자열 탐색 알고리즘의 개요

_10.2 고지식한 탐색 알고리즘

__10.2.1 고지식한 탐색의 동작 방식

__10.2.2 고지식한 탐색 알고리즘 예제 프로그램 

_10.3 카프-라빈 알고리즘

__10.3.1 카프-라빈 알고리즘의 동작 방식

__10.3.2 카프-라빈 알고리즘 예제 프로그램

_10.4 KMP 알고리즘

__10.4.1 KMP 알고리즘의 동작 방식

__10.4.2 경계 정보 사전 계산 방법 

__10.4.3 KMP 알고리즘 예제 프로그램

_10.5 보이어-무어 알고리즘

__10.5.1 나쁜 문자 이동

__10.5.2 착한 접미부 이동

__10.5.3 보이어-무어 알고리즘의 전처리 과정

__10.5.4 보이어-무어 알고리즘 예제 프로그램

_연습문제 

 

 

Part 03 알고리즘 설계 기법

 

Chapter 11 알고리즘 성능 분석

_11.1 알고리즘 성능 측정 기준과 수행 시간

__11.1.1 알고리즘 성능 측정 기준 

__11.1.2 알고리즘 수행 시간 분석

_11.2 점근 표기법

__11.2.1 O 표기법

__11.2.2 Ω 표기법

__11.2.3 Θ 표기법

_11.3 재귀 알고리즘 성능 분석

__11.3.1 재귀 방정식과 재귀 알고리즘 

__11.3.2 퀵 정렬의 성능 분석 

__11.3.3 마스터 정리

_연습문제 

 

Chapter 12 분할 정복

_12.1 분할 정복 기법의 개요

__12.1.1 분할 정복 전술의 탄생 배경: 아우스터리츠 전투 

__12.1.2 분할 정복 알고리즘의 개념

_12.2 병합 정렬

__12.2.1 병합 정렬 동작 방식

__12.2.2 병합 정렬 알고리즘의 구현

_12.3 거듭 제곱 계산

__12.3.1 거듭 제곱 계산법

__12.3.2 거듭 제곱 계산 알고리즘의 구현

_12.4 분할 정복 기반 피보나치 수 구하기

__12.4.1 피보나치 수를 구하는 방법

__12.4.2 분할 정복으로 피보나치 수를 구하는 방법

__12.4.3 분할 정복 기반 피보나치 수 구하기 알고리즘의 구현

연습문제

 

Chapter 13 동적 계획법

_13.1 동적 계획법의 개요

__13.1.1 동적 계획법의 탄생 배경

__13.1.2 동적 계획법의 개념

_13.2 동적 계획법 기반 피보나치 수 구하기 

__13.2.1 동적 계획법으로 피보나치 수를 구하는 방법

__13.2.2 동적 계획법 기반 피보나치 수 구하기 알고리즘의 구현

_13.3 최장 공통 부분 수열 

__13.3.1 LCS 알고리즘 

__13.3.2 동적 계획법 기반 LCS 알고리즘의 구현

_연습문제 

 

Chapter 14 탐욕 알고리즘

_14.1 탐욕 알고리즘의 개요

_14.2 거스름돈 줄이기 문제

__14.2.1 거스름돈 계산 예제 프로그램 

__14.2.2 탐욕 알고리즘의 중요한 속성

_14.3 크루스칼 알고리즘 다시 보기

_14.4 데이크스트라 알고리즘 다시 보기

_14.5 허프만 코딩

__14.5.1 고정 길이 코드와 접두어 코드

__14.5.2 허프만 트리 구축

__14.5.3 데이터 압축

__14.5.4 데이터 압축 해제

__14.5.5 허프만 코딩 예제 프로그램

_연습문제

 

Chapter 15 백트래킹

_15.1 백트래킹의 개요

__15.1.1 백트래킹의 사례: 테세우스 이야기

__15.1.2 백트래킹의 개념

_15.2 미로 탈출로 찾기

__15.2.1 재귀 호출 기반 백트래킹

__15.2.2 미로 탈출 알고리즘의 구현

__15.2.3 미로 탈출 알고리즘 예제 프로그램

_15.3 8개의 퀸 문제

__15.3.1 8개의 퀸이 만드는 해공간과 백트래킹

__15.3.2 N개의 퀸 문제 풀이 알고리즘의 구현

__15.3.3 N개의 퀸 문제 풀이 예제 프로그램

_연습문제

 

__찾아보기

[ Main Quest: 더 나은 개발자 되기 ]

자료구조+알고리즘, 더 나은 개발자가 되기 위한 최고의 Level Up 루트!

 

자료구조와 알고리즘을 배우면 좋은 개발자가 되는 데 큰 도움이 됩니다. 사실 요즘은 표준 라이브러리에서 여러 알고리즘을 기본으로 제공하고 있으므로 표준 라이브러리만 사용해도 프로그램을 만들기에는 충분합니다. 하지만 아무리 좋은 도구라도 상황에 맞지 않는다면 쓸모가 없습니다. 표준 라이브러리는 개발자에게 있어 도구함과 같습니다. 좋은 개발자라면 상황에 맞는 도구를 잘 꺼내어 쓸 줄도 알아야 합니다.

그렇다면 “상황에 맞는 자료구조와 알고리즘을 어떻게 선택할 수 있을까요?” 자료구조와 알고리즘이 어떤 원리와 구조로 작동하는지 정확하게 이해하고 있어야 합니다. 작동 원리를 알고 있으므로 이것저것 적용해 보면서 허송세월하는, “‘왜 안 되지?’의 시간”을 줄여 더 좋은 프로그램을 만드는 시간에 더 많은 시간을 투자할 수 있습니다. 심지어 문제가 발생했을 때는 상황에 맞게 알고리즘을 개선할 수도 있습니다.

하지만 자료구조와 알고리즘은 배우면 배울수록 더욱 복잡한 수식이 등장하고, 코드마저 점점 길어집니다. 개발자에게는 자료구조와 알고리즘은 레이드 퀘스트와 같습니다. 더 높은 전투력을 가지기 위해 도전하고 또 도전하지만, 클리어는 절대 만만치 않죠. 마찬가지로 더 좋은 개발자가 되기 위해서 자료구조와 알고리즘을 배워야 하지만, 끝까지 배우기는 절대 쉽지 않습니다. 어쩌면 자료구조와 알고리즘은 개발자에게 ‘최종 보스’일지도 모릅니다. 

그동안 자료구조와 알고리즘을 끝까지 배우지 못했다면 그건 아직 『이것이 자료구조+알고리즘이다』를 만나지 못했기 때문일 것입니다. 재미는 학습을 계속할 큰 동력이 됩니다. 좋은 동료가 있으면 즐겁게 게임(캠핑, 등산, 운동, 독서 모임 등)을 이어갈 수 있는 것처럼, 좋은 참고서가 옆에 있으면 자료구조와 알고리즘을 끝까지 즐겁게 배울 수 있습니다. 그래서 『이것이 자료구조+알고리즘이다』가 동료로 삼을 만큼 좋은 책이냐고요? 지금부터 『이것이 자료구조+알고리즘이다』의 특징과 다루는 내용을 소개하겠습니다. 

 

 

● 『이것이 자료구조+알고리즘이다』의 특징

 

》 자료구조+알고리즘 개념에 위트 넘치는 이야기를 담았다!

》 복잡한 수식은 최소화하고 이해에 꼭 필요한 수식만 담았다!

》 작동 원리를 쉽게 이해할 수 있게 도와주는 다양한 그림을 담았다!

》 배운 내용을 곧바로 점검할 수 있는, 퀘스트처럼 재미있는 다양한 연습문제를 담았다!

》 배운 알고리즘을 바로바로 테스트할 수 있는 108개의 예제 소스를 제공한다!

》 자료구조와 알고리즘 공략을 위한 저자 Q&A 카페를 운영한다!

 

 

● 『이것이 자료구조+알고리즘이다』에서 다루는 내용

 

》 알고리즘의 기반이자 그 자체로도 아주 유용한 4가지 자료구조

→ 리스트, 스택, 큐, 트리

 

》 프로그래밍 실력 향상에 도움되는 6가지 알고리즘

→ 정렬, 탐색, 우선순위 큐와 힙, 해시 테이블, 그래프

 

》 더 좋은 프로그램을 만드는데 도움이 되는 알고리즘 성능 분석법과 4가지 설계 기법

→ 알고리즘 성능 분석, 분할 정복, 동적 계획법, 탐욕 알고리즘, 백트래킹

 

 

●  『이것이 자료구조+알고리즘이다』를 읽어야 하는 당신

 

》 C 언어는 완벽! 그렇지만 취업에 알고리즘이 필요하다던데?

→ 취업 등을 위해 자료구조와 알고리즘의 기본 개념을 제대로 이해하고 싶은 취업준비생!

 

》 컴퓨터공학 전공 학점은 완벽! 그렇지만 더 좋은 개발자가 되고 싶은데?

→ 컴퓨터공학 전공자로 자료구조와 알고리즘만큼은 제대로 배우고 싶은 학생!

 

》 실무 능력은 거의 완벽! 그렇지만 헷갈릴 수 있는 내용을 그때그때 확인하고 싶은데? 

→ 개발하면 두고두고 살펴볼 자료구조와 알고리즘 참고서가 필요한 개발자!

 

 

● 예제 파일 다운로드

 

     → https://www.hanbit.co.kr/src/11003

 

 

● 관련 도서

 

『혼자 공부하는 C 언어』(한빛미디어, 2019)

『이것이 취업을 위한 코딩 테스트다』(한빛미디어, 2020)

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

요즘 채용시장에 필수적으로 코딩테스트가 많이 채택되는 회사가 많아지는 곳이 보이고 있다. 코딩테스트에서 자료구조를 활용을 하면 코딩테스트 또한 수월한데, 자료구조가 어렵게 느껴지지만 이 책을 읽고 나면 자료구조 별거 없구나 하고 느낄 것이다. 다른 자료구조책보단 훨씬 얇긴 하지만, 내용 측면에서는 간결하고 필요한 부분만 있어서 더 쉽게 느껴졌고 재미있게 읽을 수 있었다.

'좋은 프로그래머가 되려면 눈앞의 문제에 적절한 자료구조와 알고리즘을 적용할 수 있어야 한다. 라는 지은이의 말에 처음으로 나오는 문장이 굉장히 인상깊게 느껴졌다.

어떤 프로그래머이든지 눈앞에 마주치는 문제들을 어떻게 풀어야 할지가 굉장히 큰 이슈인데, 자료구조를 도입해보면 굉장히 쉽고 빠르게 구현되는 경우가 많고 특히 컴퓨터는 자료구조를 잘 지킨다면 유지 보수도 쉬울 것이다. 좋은 프로그래머가 되기를 원한다면 천천히 읽어보길 권해드립니다.

C#이나 자바, 파이썬 같은 현대적 언어를 사용해본 독자는 이 언어들이 표에서 소개한 것보다 더 많은 자료구조 라이브러리를 제공한다는 것을 알고 있을 것입니다. 대개는 이렇게 제공되는 자료구조를 적절히 활용하기만 해도 소프트웨어 개발을 잘 해낼 수 있습니다.

 

"그렇다면 자료구조를 왜 공부해야 하나요?"

 

이것이 자료구조+알고리즘이다 with C언어, p.5

 

 

자료구조나 알고리즘을 공부하다보면 이런 질문이 들고는 합니다. 좋은 라이브러리들을 잘 찾아서 효과적으로 사용하는 방법을 공부하는 것이 더 효율적이지 않을까? 남들이 이미 잘 만들어 놓은 라이브러리들을 놔두고 왜 자료구조와 알고리즘을 공부해야 할까?

 

 

책 소개: 이것이 자료구조+알고리즘이다 with C언어

 

이 책은 기본적으로 C 언어에 친숙한 독자들을 대상으로 집필되었습니다. C언어에 대해 아주 살짝 다루기는 하는데 문법 전반을 소개하는 것은 아니고 포인터, 구조체, 메모리 레이아웃, 스택에서 데이터를 다루는 방법, 힙에서 데이터를 다루는 방법 들만 아주 살짝 복습하고 지나갑니다. 따라서 C언어를 어느 정도 익힌 분들이 보시는 것이 좋습니다. 물론 요즘엔 파이썬, 자바 등을 이용한 알고리즘 책들도 많이 나오지만 아무래도 C언어를 활용하면 포인터를 이용하여 메모리를 직접 다룰 수 있다는 것이 큰 장점이지 않은가 싶습니다.

 

 

이것이자료구조알고리즘이다1.jpg

 

 

이 책은 크게 세 파트로 나누어져 있습니다.

Part I. 자료구조

Part II. 알고리즘

Part III. 알고리즘 설계 기법

 

Part I. 자료구조 편에서는 리스트, 스택, 큐와 트리에 대한 내용이 담겨있습니다. Part II. 알고리즘 편에서는 여러 가지 정렬, 탐색 알고리즘, 우선순위 큐와 힙, 해시테이블, 그래프, 문자열 탐색에 대하여 담겨있습니다. 마지막 Part III. 알고리즘 설계 기법 편에서는 알고리즘 성능 분석, 분할 정복, 동적 계획법, 탐욕 알고리즘, 백트래킹 등 보다 고급 알고리즘 내용들이 알차게 담겨 있습니다.

 

자료구조나 알고리즘을 처음 공부하시는 분들은 키워드만 읽어도 어렵고 복잡해보입니다. 저자님이 그런 저같은 사람을 위해 쉽고 재미있는 예시들을 들어가며 친절하게 길을 안내해주십니다.

 

이것이자료구조알고리즘이다2.jpg

 

 

또한 알고리즘의 전개 과정을 다양한 도식으로 단계별로 담아놓아 복잡한 내용들도 차근차근 읽어내려가면 충분히 이해할 수 있습니다.

 

 

이것이자료구조알고리즘이다3.jpg

 

 

오랜만에 만나는 C언어 코드. 최근에는 파이썬 코드들을 주로 보았는데 오랜만에 만나는 C언어는 반갑기도 하고 어색하기도 하네요. 

 

 

이것이자료구조알고리즘이다4.jpg

 

 

간단한 후기

 

자료구조와 알고리즘을 처음부터 제대로 배우고자 하는 사람들도 충분이 볼 수 있도록 눈높이가 잘 맞춰져 있습니다.

수식은 최소화하고 다양한 그림으로 개념들을 쉽게 이해할 수 있도록 돕습니다.

컴퓨터 앞에 꽂아놓고 필요할 때마다 꺼내보면 좋을 것 같습니다.

 

 

"그렇다면 자료구조를 왜 공부해야 하나요?"

 

라는 질문에 저자는 이렇게 대답합니다.

 

첫재, 자료구조의 내부를 이해하면 라이브러리에서 엉뚱한 자료구조를 선택하는 일을 피할 수 있습니다.

둘째, 자료구조는 알고리즘 데이터를 효율적으로 사용할 수 있게 도와주는 핵심 부품 역할을 하기 때문입니다.

...

알고리즘을 체계적으로 공부하지 않아도 프로그래밍을 할 수 있지만, 더 나은 프로그래머가 되기 위해서는 알고리즘에 대해 제대로 알아둘 필요가 있습니다.

 

이것이 자료구조+알고리즘이다 with C언어, p.5-6

 

 

자 이제 자료구조, 알고리즘의 세계로 뛰어들어볼까요?

 

 

이 서평은 한빛미디어 <나는 리뷰어다 2022> 서평단 활동으로 무상으로 도서를 제공받아 작성하였습니다. 서평단 활동과 별개로 저의 관심과 필요에 따라 책을 읽고 객관적으로 서평을 작성하려고 노력하였습니다.

 

출처: https://it4edu.tistory.com/228

 

2022년 8월에 출간된 따끈따끈한 책 <이것이 자료구조+알고리즘이다 with C 언어>를 소개합니다. 이 책의 부제는 '문제 해결 능력을 키워주는 자료구조+알고리즘 입문서'입니다. 이 책의 저자는 박상현 님으로 대표작으로 <뇌를 자극하는 알고리즘>과 <이것이 C#이다> 등을 집필하셨습니다. 특히 <뇌를 자극하는 알고리즘>은 대한민국학술원 우수학술 도서로 선정되었던 책입니다. 

이 책을 통해 약 10여 년 만에 C언어를 다시 경험하게 되었습니다. 조금씩 간접 경험했지만, 이렇게 많은 시간을 함께하지는 않았던 것 같습니다. 이 책은 C언어를 활용하여, 자료구조와 알고리즘을 학습하는 데 도움을 줍니다. 최근 출간 도서들을 살펴보면, 자바나 파이썬을 활용한 자료구조와 알고리즘 책이 출판되고 있습니다. 하지만 C언어로 학습하는 자료구조와 알고리즘은 또 다른 매력이 있음을 다시 한번 경험하게 되었습니다. 

<이것이 자료구조+알고리즘이다 with C 언어>는 약 660페이지로 구성되어 있어 휴대하면서 읽기에 다소 부담스럽습니다. 한빛미디어 책은 대부분 전자책으로도 출간되어 있으므로, 전자책 뷰어가 있으시다면 전자책으로 만나보는 것도 좋을 것 같습니다. 하지만 개인적인 의견으로 이 책은 일반 책으로 읽는 것이 좋을 것 같습니다. 실제 책을 보는 것보다 A4와 연필로 이해하는 경우가 더 많을 것이기 때문입니다.

한빛미디어 평가단에 참가하여 작성한 글이며, 한빛미디어에서 제공해준 책을 읽고 작성했음을 밝힙니다. 

 

이 책의 매력은?

<이것이 자료구조+알고리즘이다 with C 언어>는 3부 16장으로 구성되어 있습니다. 특이한 점은 00 챕터로 시작하는 부분인데, 이 챕터는 자료구조와 알고리즘의 간단한 소개와 1부는 C언어로 메모리를 다루는 법(예: 포인터 등)을 요약해서 설명합니다. 필자는 메모리를 직접 다룰 수 있는 부분이 C언어로 자료구조와 알고리즘을 학습하는 데 매력적인 부분이라 생각하므로 이 부분을 처음에 설명한 부분은 매우 만족스러웠습니다.

1부에서는 자료구조를 다룹니다. 리스트(링크드 리스트, 더블 링크드 리스트, 환영 링크드 리스트)를 시작으로 스택, 큐, 트리 총 4개의 장으로 구성되어 있습니다. 일반적인 자료구조 책에서 다루는 내용을 대부분 다루고 있습니다. 2부에서는 알고리즘을 다룹니다. 정렬(버블, 삽입, 퀵), 탐색(순차, 바이너리, 레드-블랙 트리), 큐, 힙, 해시 테이블, 그래프, 문자열 탐색 알고리즘 등을 설명합니다. 마지막 3부에서는 알고리즘 설계 기법을 설명하고, 알고리즘 성능 기법, 분할 정복, 동적 계획법, 탐욕 알고리즘, 백트래킹 등을 다루고 있습니다. 

1부와 2부에서 자료구조와 알고리즘의 기초에 대해 다루고, 3부에서 앞에서 배운 자료구조와 알고리즘을 활용하여 알고리즘을 어떻게 설계해야 공간/시간 복잡도를 고려하며 프로그램을 작성할 수 있는지에 대한 이해도를 높일 수 있습니다.

이 책은 자료구조와 알고리즘에 관한 입문서로 모든 자료구조와 알고리즘을 다루고 있지는 않습니다. 하지만 이 책에서 배운 지식을 체계적으로 내재화할 수 있다면, 여기서 다루지 않은 자료구조와 알고리즘도 이해하는 데 큰 어려움은 없을 것으로 생각합니다.

컴퓨터와 친하지 않고 프로그래밍이 아직 어색한 독자라면 이 책이 어렵게 느껴질 수 있습니다. 하지만 이 책에서 다루는 내용을 이해할 수 있다면, 컴퓨터 프로그래밍을 하기 위한 큰 문턱을 하나 넘은 것입니다. 한 번 도전해 보세요. 프로그래밍이 더 재미있게 다가올 것입니다.  

 

마치면서

<이것이 자료구조+알고리즘이다 with C 언어>는 프로그래밍 입문자가 프로그래밍의 매력에 빠질 수 있게 도와주는 책입니다. 다만, 시간과 노력을 투자해야 한다는 전제가 깔려 있습니다. 이 책을 처음부터 끝까지 정독하며 관련 내용을 이해하고, 연습문제를 풀이한다면 프로그래밍의 매력에 빠질 것임을 의심하지 않습니다.

운동을 할 때도 기본 체력 운동이 제일 어렵습니다. 재미도 없고, 힘들기도 배로 힘들죠. 하지만 그 어려움을 이겨낼 때 좋은 운동선수로 성장할 수 있습니다. 자료구조와 알고리즘도 비슷합니다. 이 어려움을 잘 극복한다면 프로그래밍이 재미있고 더 빨리 성장할 수 있을 것입니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한빛미디어에서 출간한 이것이 자료구조 알고리즘이다 라는 책은 독자가 마지막 페이지까지 읽는 것을 목표로 기초부터 이해하기 쉽도록 집필해놓은 책이다. 수식은 최소화 하고 한 눈에 들어오는 그림을 많이 넣었다는 글귀는 혹하게 만든다. 개발자들에게 자료구조와 알고리즘이 필수라는 것은 실무를 하면서 매번 느끼고, 간헐적으로 계속 공부를 하게되느 분야인 듯 하다. 먼저, 자료구조란 데이터 보관 방법과 데이터에 관한 연산의 총체를 뜻한다. 흔히들 아는 단순 자료구조로는 int, long, double 등이 있으며, 복합적인 자료구조로는 선형, 비선형 방식에 따라 나뉘어 선형 자료 구조는 배열, 링크드리스터, 스택, 큐, 힙이 있고, 비선형 자료 구조로는 트리 및 그래프가 있다. 자료구조를 공부해야하는 이유는 자료구조 내부를 이해하게 되면 라이브러리에서 엉뚱한 자료구조를 선택하는 일을 피할 수 있고, 동일한 일련의 연산을 사용하더라도 자료구조에 따라 애플리케이션 성능이 크게 달라질 수 있기 때문이다. 또한 자료구조는 알고리즘이 데이터를 효율적으로 사용할 수 있게 도와주는 핵심 부품 역할을 한다. 즉, 자료구조를 모르게 되면 알고리즘을 공부하는데 큰 어려움을 겪을 수 있다. 더 나아가 알고리즘 개념은 어떤 문제를 풀기 위한 단계적 절차를 뜻한다. 이러한 알고리즘을 구현하는데 있어서 자료구조는 필수이고, 또 문제를 효율적으로 풀기위해 최적의 알고리즘을 찾고 개발하는 것이 중요하다고 할 수 있다.
1장에서는 리스트 개념을 배우고, 관련된 리스트들(링크드리스트, 더블 링크드 리스트, 환형 링크드 리스트)를 배우고, 2장에서는 스택 개념을 배운다. 3장에서는 입력된 순서대로 데이터를 출력하는 큐에 대해 다루며, 4장에서는 각 노드가 하나 이상의 노드와 연결되는 비선형 자료구조인 트리에 대해 다룬다. 여기서부터 약간 어려워질 수 있으나 이 책에서는 그림을 최대한 많이 사용하여 쉽게 설명하고 있으므로 내용을 이해하는데 어려움은 크게 없다. 5장에서는 정렬을 배운다. 알고리즘에 있어서 정렬은 시간복잡도에 영향을 주로 주는 요인 중 하나이다. 단순 함수를 써서 정렬 할 수도 있겠지만, 기초적인 내용을 배워놔야 응용할 수 있으며, 각 정렬 알고리즘의 성능을 비교하며 공부해놓는 것이 중요할 듯 하다. 6장에서는 탐색 알고리즘에 대해 배우게 된다. 순차탐색, 이진탐색, 이진탐색트리, 레드블랙트리 개념이 있다. 7장에서는 우선순위 큐와 힙 내용에 대해 다룬다. 3장에서 다뤘던 큐와는 달리 선입선출 방식으로 동작하지 않고, 우선 순위에 따라 데이터의 출력 순서가 결정된다. 그 다음 8장에서는 해시 테이블에 대해 다룬다. 이는 알고리즘의 메모리 공간과 관련이 있다. 9장에서는 그래프 개념에 대해 다룬다. 10장에서는 문자열 탐색에 대해 다루는데 문자열 안에 존재하는 특정 단어를 빠르게 찾아내는 것이 목적이다. 처음부터 문자열을 쭉 읽어 문자를 탐색할 수도 있겠지만, 그럴 경우 시간이 너무 오래 걸려서 time out 이 발생할 수 있다. 이러한 문제를 해결하기 위한 방법으로 이 책에서는 가장 뛰어난 성능을 가졌다고 검증된 몇 가지만 선별해서 설명하고 있다.
 
11장 부터 15장 까지는 분할 정복, 동적 계획벅, 탐욕 알고리즘, 백트래킹 등의 알고리즘 설계 기법에 대해 다룬다. 끝판왕 느낌이다. 이를 알아두면 프로그램에 맞지 않는 알고리즘을 재설계하는 시간을 아껴 더 좋은 프로그램을 만드는 일에 집중할 수 있으며, 릿코드나 백준 프로그래밍에서 어려운 알고리즘 문제를 푸는데 가장 기초가 되는 개념이다. 문제를 어떤 알고리즘으로 접근하냐에 따라 시간복잡도, 공간복잡도가 크게 달라질 수 있으므로 이를 잘 설계하는 것이 중요하다. 
 
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

C언어를 가르치고 있는데, 2학기에는 좀 더 다양한 예제를 활용해 보고자 해서 이 책을 선택했다. 기초적인 내용들을 배우고 포인터를 본격적으로 활용하고자 할 때 리스트, 스택, 큐와 같은 자료구조를 구현해보지 않을 수는 없으므로. 그리고 간단한 정렬과 탐색도 연습한다. 물론 자료구조, 알고리즘 과목이 따로 있다. 하지만 처음 C언어를 배우면서도 이런 예제 위주로 연습을 하다 보면 나중에 해당 과목을 수강할 때 도움이 많이 되리라 생각한다. 대부분의 독자들은 아마 자료구조와 알고리즘 두 마리 토끼를 잡기 위해 이 책을 선택하겠지만, 나의 경우에는 C언어의 입장에서 이 책을 살펴보았다.

 

보통 책이 Chapter 1부터 시작하는데 이 책에는 Chapter 0이 있다. <알아두면 쓸 데 있는 자료구조와 알고리즘>이라는 제목으 0챕터에서는 자료구조와 알고리즘의 정이, 그리고 C 언어로 메모리를 다루는 방법에 대해서 설명을 하고 있다. 오리엔테이션의 느낌으로. C언어 문법에 익숙하지 않은 사람도 가볍게 구조체와 포인터, 메모리할당과 해제에 대해 연습해 볼 수 있다.

 

1장부터 4장까지는 자료구조 파트로 리스트, 스택, 큐, 트리 구조를 다루고 있고, 5장부터 10장까지는 각종 정렬 알고리즘, 탐색 알고리즘, 우선순위 큐와 힙, 해시 테이블, 그래프 그리고 문자열 탐색에 대해 다룬다. 마지막 파트인 11장 부터 15장까지에서는 알고리즘 설계 기법들을 설명하고 있는데, 알고리즘의 성능 분석, 분할 정복, 동적계획법, 탐욕 알고리즘, 백트레킹을 소개하고 있다.

 

나는 특히 연습문제로 어떤 것들이 주어졌는지에 관심이 많은데, 개념을 설명하면서도 예제 코드를 제시하고 있지만, 이렇게 연습문제를 통해서 개념을 더 다질 수 있다. 개념을 잘 이해하고 있는지 묻는 문제와 주어진 코드를 수정/개선하는 문제들로 이루어져 있다.

 

레드 블랙 트리에 삼촌 노드, 할아버지 노드라는 표현을 사용한 것도 재밌지만^^ 노드 삽입/삭제도 코드로 구현해 볼 수 있게 설명이 자세히 되어 있다. 레드블랙 특성에 대해서만 설명하고 넘어가는 책도 많이 보았는데.

 

동적계획법 장에서는 분할정복 기법이나 재귀를 이용하는 것과는 어떻게 다른지를 비교해서 설명하고 있다. 단지 이미 구해놓은 값을 활용한다는 말에만 집중해서 "재귀가 동적계획법과 같은 것 아닌가요?" 하는 학생들도 많이 있는데 코드로 차이를 설명해 준다.

 

이 책은 C언어 기초문법을 배운 후 좀 더 연습해 보고 싶은 학생, 자료구조와 알고리즘을 본격적으로 배우려고 하는 학생에게 추천한다. 한 권의 책에 자료구조와 알고리즘을 모두 담고 있기 때문에 이 한 권으로는 만족하지 못할 수도 있다. 하지만 시작하는 책으로는 참 좋을 것 같다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.



큐, 트리, 정렬부터 탐색, 큐, 해시테이블, 분할 정복, DP, 탐욕 알고리즘, 백트레킹까지 상세하게 설명해준다.

코딩을 놓은지 좀 돼서, 전공자지만 찬찬히 앞부터 다시 내용을 훑고싶어 이 책을 선택했는데 너무 잘 선택한 것 같다. 사실 코딩테스트 같은걸 보면, 이 책 이상으로는 잘 안나온다.

 

여기 내용만 충분히 익혀도, 기본기가 탄탄해 질 것 같다.

 

비전공자 IT직렬 친구 이야기를 들어보면, 기본기가 부족해서 걱정이란 말을 많이하는데 전공자로서 이책을 봤을 때 책 내용이 굉장히 상세하게 적혀있으면서도 필요한 내용이 모두 들어가 있기 때문에 기본기를 익히는데도 적합할 것 같다.





높은 탑을 쌓아올리기 위해서는 기본이 탄탄해야한다.

 

기본이 약하다고 생각하는 비전공자, 전공자 모두에게 이책을 추천한다.

나또한 인생사 어떻게 될지모르고 공부한지 좀 되었기에 이책을 통해 자료구조와 알고리즘을 다시 복습할 생각이다다. :)

 

이책은 한빛미디어로부터 제공받아 작성된 후기로, 솔직한 후기만을 작성했습니다!



 

 

이것이 자료구조+알고리즘이다 with C 언어

복잡한 수식은 최소화하고 이해에 꼭 필요한 수식만 담고 작동 원리를 단번에 이해할 수 있게 도와주는 다양한 그림과 바로 실행하고 확인할 수 있는 108개 소스 코드를 예제로 제공해 알고리즘

www.hanbit.co.kr


    오랜만에 C언어로된 교재를 받았다. 입문서로 분류되긴 하지만 자료구조와 알고리즘은 언제나 복습해야하는 중요한 요소로 생각되는 바, 기본적인 공부도 할겸 자세히 읽어보고 있다. 운이 좋은 것인지, 이번 회사에서는 주로 C, C++ 로 작업을 하고 있다보니 코드를 조금 더 깔끔하게 작성하는데 직간접적으로 도움을 받는 중이다.



    내가 좋아하는 보라색(!)으로 깔끔하게 만들어진 책이다. 이것이...이다 시리즈의 책을 벌써 5~6권째 보고 있는데, 다른 책도 물론 좋았지만, 아무래도 가장 업무와 연관이 있는 C언어로 작성된 기본서라 조금 더 정이 간다.



     가장 마음에 들었던 점은 자료구조와 알고리즘이 같이 잘 녹아있는 책이라는 점이다. 물론 시중에도 함께 작성된 책은 많은데, Greedy 알고리즘이나 Dynamic 알고리즘을 직접적으로 언급하면서 내용이 많이 할당된 책은 많지 않다. 그리고 자료구조를 배움과 동시에 바로 이어서 알고리즘을 익힐 수 있으니 교육을 하는, 받는 입장에서도 굉장히 유용한 책일 것 같다. 수업 교재로 쓰면 딱 좋겠다는 생각이 든다.



    책은 꽤 두꺼운데, 그런 만큼 그림과 코드가 꼼꼼하게 잘 설명되어 있다. 한번 공부해본 사람들이나 복습의 목적을 가진 사람들은 굳이 따라 쳐보거나 하지 않아도 눈으로 따라 읽어볼 수 있을 정도로 자세하게 되어 있으니 부담없이 볼 수 있다.  처음 공부하는 사람들은 방대한 양에 겁을 먹을 수도 있지만 이 책 한권으로도 꽤 많은 코드를 작성해볼 수 있으니 많은 경험을 하게 될 것이다.



    각 단원에는 어떤 알고리즘들을 배우게 될 것인지 순서도 설명하고 있으며 그 알고리즘이 어떻게 구성되고 개발되어 있느지를 하나씩 배우게 된다. 실제 대학의 알고리즘 수업도 이 과정과 비슷한데, 공부하다보면 알고리즘이 어떻게 발전되어 왔는지, 이전 알고리즘보다 어떤 점이 더 좋고 안좋은지, 지금은 어떤 알고리즘을 채택해서 쓰고 있는지 등도 알게 된다. 물론 하나씩 직접 구현해본다는 것이 가장 좋은 점이다.



    앞에서도 말했듯이 동적(Dynamic) 계획법과 같은 내용을 직접적으로, 자세하게 언급되있따. 이 책의 알고리즘은 진짜 학부과정에서 배우는 컴퓨터 알고리즘 과목을 말하는 것 같다. 학부생이나 입문자 기준에서는 이 책을 보고 나서 코딩 테스트 책들이나 다른 여러가지 알고리즘들을 설명한 책들도 함께 보면 많은 도움이 될 것 같다. 



끝.

 


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

이것이 자료구조+알고리즘이다 with C 언어도서를 소개합니다.

 

 

hanbit-algo-01.png

 

 

소프트웨어 업종에서 이직을 위한 코딩 테스트를 피할 수 없는 부분이다. 코딩테스트는좋은 소프트웨어 개발자를 고용하고자 하는 기업의 선별 기준된 것은 분명하고, 지인에게 듣기에도 꽤 유명한 IT 회사 이직에서 좋은 경력을 가졌음에도 코딩 테스트 벽에 부딪혀 탈락의 고배를 마신 이들이 꽤 된다고 들어서중요도가 매우 높아졌다. 굳이 이직을 거론하지 않아도, 생산성에대한 고찰과 리뷰 문화 확대로 자료구조와 알고리즘의 중요성은 중요해지지 않았던가.... 어쩃든 자료구조와알고리즘은 개발자의 실력을 비교하는 기준이 된 것은 사실로 보입니다.

 

기대했던 내용

#####################################

"이것이 자료구조+알고리즘이다 with C 언어을 리뷰하기 직전에 도서에서 기대한 내용들이 있었습니다. 자료 구조와 알고리즘에 대한 기본에 충실한지, 이론을 실습할 수있는 문제는 풍부한지, 알로리즘 최적화에 대한 내용도 풍부했으면 했고,자료구조와 알고리즘을 설명을 얼마나 쉽게 전달할 수 있는지에 대한 부분이었죠.

 

목차를 살펴보면 기대에 부합되는 내용들이 포함되어 있는 것을 알 수 있었습니다.이 책은 총 14장으로 구성되어 있고,

ü  Chapter 01 리스트

ü  Chapter 02 스택

ü  Chapter 03

ü  Chapter 04 트리

ü  Chapter 05 정렬

ü  Chapter 06 탐색

ü  Chapter 07 우선순위 큐와 힙

ü  Chapter 08 해시 테이블

ü  Chapter 09 그래프

ü  Chapter 10 문자열 탐색

ü  Chapter 11 알고리즘 성능 분석

ü  Chapter 12 분할 정복

ü  Chapter 13 동적 계획법

ü  Chapter 14 탐욕 알고리즘

hanbit-algo-02.png

 

 

 

리스트, 스택, , 트리의 4가지 자료구조 파트와 정렬, 탐색, 우선순위 큐와 힙, 해시테이블, 그래프의 6가지 알고리즘, 그리고 마지막으로 “Chapter 11 알고리즘 성능 분석부터는 파트-3에 해당하는 알고리즘 성능 분석법과 4가지 설계 기법에 대해서 설명하고 있습니다.

 

hanbit-algo-03.png

 

매 챕터 시작에서는 이 장에서 배워야 하는 내용을 소개하고, 어떤flow로 전개할지를 보여줍니다. 자료구조나 알고리즘을 어느정도 아는 이들도 후반기 내용을 가면서 다시 심화 내용으로 이어지기 때문에 이런 내용 전개는 중요하다고 생각됩니다.

 

자료구조와 알고리즘 이론에 대한 탄탄한 이론과 함께 풍부한 그림 사용은 독작의 이해도를 높여줍니다. 단순하게 도식화된 이미지들이 굉장히 많이 삽입되어 있습니다. 또한탄탄한 이론 설명에 이어 이를 실습할 수 있도록 예제 프로그램을 함께 작성하여 설명을 진행하고,

 

hanbit-algo-04.png

 

 

마지막으로 연습문제로 학습한 내용을 되새김하는 것 또한 좋았습니다.

 

hanbit-algo-05.png

 

 

 

 

장단점

#####################################

기본 이론에 충실

풍부한 그림 삽화를 통한 이해도 증대

예제와 연습문제로 기억의 암각화

 

 

탄탄한 이론 설명과 실습 제공 위주로 내용이 구성되어 있다는 점이 이 책의 가장 큰 장점이라고 생각합니다. 모든 이론 도서의 특성상 다소 지루해질 수 있으나, 인내를 가지고따라해보기과정이 반드시 필요합니다. 파트 1, 2를 통해 주요 자료구조와 알고리즘을 이해하고, 마지막 파트 3를 통해 알고리즘 최적화를 포함한 심화 내용으로 이어집니다.

 

hanbit-algo-06.png

 

 

 

마무리

#####################################

사실 자료구조와 알고리즘 도서는 오랫동안 꽤 출간되었습니다. 그럼에도 불구하고 도서의 심화내용까지숙지하고 있는 이들은 상대적으로 비율이 적죠. 자료구조와 알고리즘에 대한 탄탄한 이해도와 실제 활용에대해서 체계적으로 정리된 한 권의 도서라고 말씀드리고 싶습니다.

 

hanbit-algo-07.png

 

한 권쯤은 책장에 구비해두고 필요할때마다 레퍼런스해서 보기 좋은, 또한 인내를 가지고 읽고실습을 통해 내용을 숙지한다면 분명한 가치를 가지는 도서여서 구매력이 충분한 도서라고 말씀 드리고 싶고 보다 나은 개발자로 레벨-업 될 것으로 사료됩니다.

 

"한빛미디어 출판사의 리뷰 활동을 위해서 책을 제공받아 작성된서평입니다."


 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

책을 제공받았지만 싫으면 싫다. 별로면 별로다. 좋으면 좋다! 라고 솔직하게 리뷰하겠습니다.


 

책 소개 :

자료구조는 코드를 작성할 때 정말 중요한 부분인것을 인지하고 있지만, 일을 하다보면 내가 조금 더 익숙한 알고리즘을 사용하게 되면서 그 상황에 맞는 알고리즘을 적용하는 부분이 아직은 어렵다.

그렇기 때문에 이 책은 그런 나에게 다시한번 자료구조에 대해 복습하는 계기가 되었다.

C언어로 설명이 되어있기는 하지만 보통 프로그래밍 입문을 C로 하기도 하고 많이 어려운 언어는 아니기때문에 이해하는데 큰 어려움은 없다고 생각된다.

학교에서 전공수업도 거의 한빛미디어에서 나온 책들이 전공책이었고 이번 한빛미디어 책 리뷰를 하게되면서 여러 책들을 보고있는데 그러면서 항상 생각되는 부분은 IT책 출판사중에서는 한빛미디어가 제일 초심자가 다가가기 쉽게 풀어서 책을 잘 만드는듯 하다. 깔끔한 구조 적절한 이미지와 쉽게 풀이되는 예시 코드까지. 자료구조는 정말 중요한 부분이라고 생각되기때문에 꼭 읽어봤으면 좋겠다. 

 

 

 

 

 

 

 

 

 

장점 :  초보자가 보기에도 어렵지않게 중간중간 개념에 대해 집어주는 부분도 있다. 예를 들면 포인터부분을 잠깐 잊고있었는데 그 부분을 이 책을 읽으면서 다시 배우게 되었다. 아무리 이론적으로 풀어 설명한다고 해도 막상 코드에 어떻게 적용을 하는가 이 부분이 입문자에게는 가장 큰 난제라고 생각했는데 이런 부분도 예시 코드로 주석과 함께 친절하게 설명되어있다. 이번 책은 단점이 없는 내 마음에 쏙 드는 책이였다.

 

단점 :  없다. 너무 좋았고 틈틈히 계속 공부할 예정이다.


 

개발자라면 꼭 필수로 공부해야 되는 자료구조, 알고리즘 책을 리뷰해보려 한다.

일단 이 책은 C언어 베이스로 적혀 있는 책이다.

전공자라면 거의 대부분 C언어를 알기 때문에 다른 언어 베이스의 책보다는 이 책을 강력 추천한다.

왜냐면 C언어로 자료구조와 알고리즘을 공부하면 다른 언어에서는 쉽게 접하기 힘든 더 딥한 부분(메모리에 관한 부분)까지 접할 수 있는 장점이 있다.

그리고 이 책은 자료구조와 알고리즘에 대한 모든 개념이 있는 것이 아닌, 핵심 개념만 소개하기 때문에 보기 좋다. 

이 책은 자료구조, 알고리즘, 알고리즘 설계 기법 총 3개의 내용으로 구성되어 있다.

자료구조는 리스트, 스택, 큐, 트리에 대해 배운다.

자료구조의 개념을 설명하며, 자료구조를 직접 구현해본다. 또한 메모리 원리를 이해하는 등 여러 방면의 지식을 얻을 수 있다.

 

알고리즘에서는 정렬, 탐색, 우선순위 큐와 힙, 해시 테이블, 그래프, 문자열 탐색에 대해 공부한다.

앞에서 배운 자료구조를 응용하여 알고리즘을 구현하여 앞의 내용을 복습할 수 있다.

또한 여러 가지 기법들이 소개되어 있어 비교하면서 보기 좋다.

 

마지막으로 알고리즘 설계 기법에서는 상황별 알고리즘 설계 기법과 성능 측정법에 대해 설명한다.

알고리즘 성능 분석, 분할 정복, 동적 계획법, 탐욕 알고리즘, 백트래킹에 대해 자세히 나와있다.

 

이 책은 자료구조와 알고리즘을 한 번에 공부할 수 있어 좋았다.

자료구조, 알고리즘을 따로따로 공부하면 어떤 자료구조를 어디에 사용해야 될지 감을 잡기 힘들고 사용을 제대로 하기 힘들었다.

하지만 자료구조를 먼저 공부하고 그에 맞는 사용법을 알고리즘을 통해 볼 수 있어 효과적인 공부가 되었던 것 같다.

 

이 책은 자료구조와 알고리즘을 정석으로 공부하고 싶은 개발자에게 너무너무 추천한다!!

 

 

한빛미디어 서평단 활동으로 이것이 자료구조 + 알고리즘이다 를 받았다.

자료구조를 다루는 책은 오랜만에 읽어본다. 

파이썬을 자주 쓰다보니 부끄럽게도 포인터 개념에 대해서는 어렴풋이나마 알고 있지만 여전히 명확히 이해하지는 못하고 있다. 

그렇기 때문에, 자료구조와 알고리즘의 입문자와 중급자 사이에 모호하게 걸쳐져 있는 상태인데, 

책이 상당히 쉽게 읽혔다. 

 

설명들도 꼼꼼했고, 궁금할 만한 부분들에 대해서도 작성시에 고려되어 있었는지 읽는 족족 궁금증들이 잘 정리가 되었다. 

기존에 다른 자료구조 책들도 몇권 갖고 있는데, 그 책들에 비하면 두께가 얇은 편이다. 

그래서 내용이 적은 것일까? 싶었는데, 내용이 적은 편도 아니었고, 설명 자체가 장황하기보다 간결하고 필요한 부분만 작성되어 있어서 그런 것 같았다.

 

자료구조를 공부하려는 분이 있다면 강력하게 추천드리고 싶다.

 


 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

표지.jpg

 

 

C에 대한 기본 문법을 알고 봐야하는 책입니다.  자료구조를 C로 코딩하고, 설명하는 책이기에 C에 대한 기본기가 탄탄하지 않으면 보는데 고생할 책입니다. 책의 편집은 가독성 있게 아주 잘되어 있습니다. 챕터별로 스택, 리스트, 트리 등 이론을 알려줍니다. 도식화로 쉽게 설명해주고, 이를 C로 코딩해서 설명하고 있습니다. 보라색 컬러 인쇄는 독특해서 눈이 지루하지 않고 오래 봐도 괜찮은 느낌입니다. 연습문제와 퀴즈도 있고, 챕터 별로 학습 목표를 잘 정리하기에 이에 중점을 두고, 내가 해당 챕터를 다 공부하고 나서 설명할 수 있는지로 공부하면 됩니다.

 

 

주니어 개발자가 되면, 더 높은 품질의 코드를 만들기 위해서 자료구조와 알고리즘에 대한 고민을 하게 됩니다. C언어로 자료구조를 공부하면 좋은 이유는, 오픈소스를 커스텀하거나 할 때 꽤 유용하게 할 수 있기 때문입니다. 파이썬의 경우, 일부 라이브러리들이 C++로 되어있거나 한 경우들이 있습니다. 어느 로우 레벨까지 가서 커스텀하게 될지는 모르지만, 깊이 있는 개발자가 되기 위해서는 절차지향 언어인 C언어로 자료구조까지 하는건 큰 도움이 됩니다. 어려운만큼 자산이 되는 부분이 있습니다.

 

 

책_표지.png

 

 

“‘좋은프로그래머가되려면 눈앞의 문제에 적절한 자료구조와 알고리즘을 적용할 수 있어야 합니다.”

 

책의 앞부분, 지은이의 말에 처음으로 나오는 문장이다. 이 문장처럼 좋은 프로그래머란자료구조와 알고리즘에 대해 잘 알고 있어야 한다. 여기서 좋은프로그래머는 단순히 코딩을 하는 것을 의미하지 않는다. 주어진문제를 자신의 힘으로 해석하고 어떻게 해결할 수 있는 지를 연구한 후, 이를 실제로 구현하는 일련의과정을 모두 할 수 있어야 한다. 이를 위해서는 자료구조와 알고리즘에 대한 이해가 필수적이다. 자료구조와 알고리즘은 전산학 관련 학과에서는 전공 필수로 꼭 이수해야하는 과목이며, 그 외의 학과에서도 문제 해결력을 향상하기 위해 많이 선택되곤 한다. 컴퓨터가아무리 처리 능력이 빠르다고 하더라도 잘못된 자료구조나 알고리즘을 사용하면 굉장히 오랜 시간이 걸리거나, 잘못된결과 또는 아예 답을 구하지 못하는 경우도 발생하게 된다.

이것이 자료구조 + 알고리즘이다C 언어를 이용하여 자료구조와 알고리즘을 설명하고 있다. 요즘은Java, Python 등을 이용한 수업이 주로 이루어지고, 관련된책도 많이 나오고 있지만, 자료 구조와 알고리즘은 다룰 때는 C 언어만의장점이 있다. 일단 C언어는 포인터를 이용하여 메모리를 직접다룰 수 있기 때문에 보다 다양한 자료구조를 설계하고 알고리즘을 적용할 수 있다. 물론 포인터에 대한정확한 이해가 뒷받침되어야 하지만, 일단 익숙해지면 굉장히 편리하게 사용할 수 있다. 메모리를 직접 다룬다는 것은 그만큼 문제에 최적화된 방법을 설계할 수 있고,오버헤드를 줄일 수 있음을 의미한다.

이 책은 크게3 파트로 구성되어 있다. 파트 1은 자료구조에 대해 다루는 데, 자료 구조의 가장 기본이 되는 리스트, 스택, 큐와 트리에 대한 내용을 담고 있다. 파트 2는 자료 구조에 대한 이해를 바탕으로 알고리즘을 소개하고있다. 원하는 순서대로 데이터를 정리하는 정렬(Sorting), 많은데이터 중에서 원하는 데이터를 찾는 탐색(Traverse)과 함께 우선순위 큐와 힙, 해시 테이블, 그래프, 문자열탐색에 대해 다양한 알고리즘을 다루고 있다. 파트 3은 알고리즘설계 기법에 대해 알고리즘 성능 분석 방법, 분할 정복, 동적계획법, 탐욕 알고리즘, 백트래킹 순으로 설명하고 있다.

 

이 책은 13년 전 출간되어 대한민국학술원 우수학술도서로 선정된 바 있는 뇌를자극하는 알고리즘을 개정한 책이다. 많은 독자로부터 꾸준한사랑을 받아온 만큼 그 내용과 구성이 탄탄하여 대학의 교재로 사용하기에도 부족함이 없다. 좋은 프로그래머가되기를 원한다면 한번쯤 찬찬히 둘러볼 만한 책이다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

20220828_053316.jpg

 

 

책이 두꺼운 만큼 더 자세하게 C언어를 기반으로 다양한 자료구조와 알고리즘에 대해 설명하고 있습니다. 무엇보다 어렵지 않게 잘 풀어쓴 설명 + 한눈에 이해하기 쉬운 도식 + 소스코드에 대한 충분한 설명 덕에 공부하기 수월했어요. 역시 한빛미디어 '이것이 OO다' 시리즈는 그동안의 경험으로 믿고 볼 수 있기 때문에 책 두께에 대한 진입장벽만 넘으면 돼요. ㅎㅎㅎ

이것이 자료구조+알고리즘이다 with C언어 책은 자료구조와 알고리즘이 낯선 입문자들이 이 책을 볼 때 어디를 중점으로 봐야 하는지에 대해 학습 로드맵을 제공해 줘요. 이 부분을 보면서 각 챕터별로 꼭 알아두어야 할 내용 위주로 노트 정리하면 아주 좋아요.

그리고 이 책이 C언어를 가지고 소스코드를 제공하지만 자바에서도 스택,큐,리스트 등의 자료구조를 사용하고 하니 다른 언어를 주로 쓰시는 분들이라도 이 책으로 자료구조/알고리즘 공부를 충분히 할 수 있을것 같아요. 개인적으로는 C언어를 진짜 정처기 시험문제로 나오면 풀정도?로 밖에 몰라서 이 책 보면서 C언어 공부도 더 하게 되네요.

자료구조와 알고리즘에 대한 이해, 코딩 테스트 대비 등을 하시는 분들은 한번 이 책으로 공부하는 것도 좋을 것 같아 요.

** 본 리뷰는 한빛미디어 <나는 리뷰어다> 리뷰어 활동으로 도서만을 제공받아, 리뷰어의 주관적인 견해로 작성된 리뷰입니다. **

프론트엔드 직무로 현업에서 일하고 있는 내가 알고리즘과 자료구조의 필요성을 느낀 적은 많지 않다. 프론트엔드는 사용자와 상호작용하는 부분을 담당하는 파트이다. 프론트엔드는 자료구조와 알고리즘보다 사용자의 경험에 대한 고려와 요구사항 파악에 더 많은 힘을 쏟아야 한다.

 

그러나 이 점이 프론트엔드가 알고리즘, 자료구조 상식을 등한시 해야한다고 주장하는 것은 아니다. 필요성을 느낀 적이 많지는 않더래도 사용자 경험을 고려하여 어떠한 문제를 풀어야 했을 경우, 기획자가 기획한 요구사항을 어떻게 풀어내야 할 지 고민에 빠졌을 때는 자료구조와 알고리즘이 필요하겠구나 한다. 결국 프론트엔드도 어떠한 기능을 구현하고자 할때 알고리즘적 요소가 들어가기 마련이다.

 

그래서 내가 이번에 읽게 된 책은 '이것이 자료구조 + 알고리즘이다.' 이다.

 

--

 

내 집 책꽂이에는 저자의 또다른 책 '뇌를 자극하는 파이썬3' 가 꽂혀있다. 의도한 건 아니지만 저자가 집필한 책을 두 권이나 갖게 되었다! 사실 파이썬3 책은 모두 읽지 못했다. 내가 프로그래밍을 처음 시작하던 시절 의욕에 불타올라 언젠간 읽겠노라 하며 사놓은 책이기 때문이다.

 

각설하고, 본론으로 돌아와 책에 대해 말하자면 저자분의 글 실력이 파이썬3를 쓰던 실력보다 더 좋아졌다. 지금까지 알고리즘 강의나 문서를 여러개 보았는데 이 책이 제일 이해가 잘 된다. 물론 지금까지 축적해온 지식들이 있어 그런 것일 수도 있다. 확실한건 지루한 알고리즘 학문임에도 적절하게 환기시켜주는 이야기가 있어 지루하지만은 않고, 설명할 때 예시들이 컬러풀해서 눈에 더 잘 들어왔던 것 같다.

 

책은 C언어로 자료구조와 알고리즘을 구현하고 있다. 처음 링크드 리스트들을 C언어로 따라치며 구현해 보았는데, 따라치며 구현해 보니 C언어에 내가 미숙한 것도 있고 따라치며 읽다보니 시간이 너무 오래 걸려 링크드 리스트와 스택까지만 구현을 따라 하고 다른 구현체들은 눈으로 보며 이해하고자만 했다. (다른 이야기지만 C언어는 항상 볼때마다 새롭다.) 여기서 주의할 점은 저자분은 독자가 이미 C언어에 익숙한 사람이라 가정하기 때문에 이 부분 참고하길 바란다.

 

책의 목차는 간결하다.

 

1. 링크드 리스트

2. 스택

3. 큐

4. 트리

5. 정렬

6. 탐색

7. 우선순위 큐와 힙

8. 해시 테이블그래프

9. 문자열 탐색

10. 분할정복

11. 동적 계획법

12. 탐욕 알고리즘

13. 백트래킹

 

나열해 보니 꽤 많긴 한데.. 초급부터 고급 알고리즘까지 필요한 개념들만 꽉 담겼다고 본다. 그래서인지 표지처럼 '입문서'라 하였나 보다. 13가지 목차가 있으니 책은 두꺼운 편이다. 600페이지가 넘는다. 

 

이 책의 장점 중 하나는 쉬운 것 부터 알려주는 점이었다. 단점이 있는 알고리즘들을 먼저 알려주고 단점을 보완한 알고리즘을 차례로 소개해 줘서 더 뇌리에 박히게끔 도와준다. 예를들어.. 버블 정렬부터 알려주고 퀵 정렬을 알려준다. 그 이유로 좋은 알고리즘을 알기 위해서는 나쁜 알고리즘의 조건도 알아야 하기 때문이라고 하신다.

 

앞서 말했지만, 책에서는 알고리즘을 본격적으로 소개하기 전에 적절히 환기시켜주는 이야기들이 포함되어 있다. 여기서 인상 깊었던 이야기 하나만 얘기해 보자면, 허프만 이야기가 제일 인상깊었다.

 

MIT 박사과정생 중이던 허프만은 어느날 교수에게 기말 리포트를 제출하게 되었다. 그 리포트의 주제는 '가장 효율적인 이진 코드 기법을 고안하라.'였다. 허프만이 제출한 알고리즘은 그 리포트를 제출하라고 말한 교수의 알고리즘보다 더 우수한 것으로 드러났고 전 세계에서 가장 유명한 압축 알고리즘이 되었다고 한다.

 

조금 재미있지 않은가? 자신의 스승보다 더 우수한 알고리즘을 개발한 제자라니! 이런 이야기 외에도 오바마의 버블 정렬 언급도 있다.

 

어떤 것에 대해 전문가 수준의 지식을 갖게 되려면 기본적으로 책을 약 7권 읽으면 된다고 한다. 1~2권의 입문서,  2~3권의 중급서, 2권 이상의 고급서다. 나는 아직까지 알고리즘에 대한 갈증은 있으면서 책을 본격적으로 읽은 경험은 없었다. 그런 의미에서 이 책은 입문서로 정말 알맞는 책이다.

 

자료구조 + 알고리즘 개념 잡고 싶다면 추천하는 책!

 

--

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

8월의 한빛 서평 도서는 이것이 자료구조+알고리즘이다 with C 언어입니다. 서평 덕에 오랜만에 C언어 코드를 읽는 시간이어서 조금 어색하기도 했지만, 구현과 컴퓨터에서 실제로 어떻게 동작하는지 이해 하긴 좋은 선택이었습니다. ADT부터 해당 자료구조들의 기본 스펙과 기능들을 소개하고 컴퓨터 메모리 상에서 어떻게 작동하고 올렸다가 내리지 등 시스템 적 이해도 동시에 키울 수 있는 책이었습니다. C언어로 코드를 작성해서 단순히 문법을 익힌 수준으로 책의 코드가 다소 어려울 수 있습니다. 포인터를 이용해 메모리를 직접 참조해서 넘기고, 메모리를 할당하기 위해 해당 구조체의 크기를 연산해서 메모리 할당을 하고, 구조체에서 자신을 재귀적으로 참조하는 등 C 기초 이상을 이해를 하고 있어야 큰 무리 없이 읽을 수 있다고 생각이 들었습니다.

이런저런 개발자/프로그래밍 커뮤니티를 보다보면 주기적으로 돌아오는 주제 중에 ‘과연 자료구조와 알고리즘은 모든 프로그래머에게 필요한가?’입니다. 저는 이 질문에 필요하다고 답을 드리고 싶습니다. 탄탄하지 못한 알고리즘은 결국 개발의 속도를 지연 시키고 드물지 않게 퍼포먼스에도 영향을 줍니다. 공부를 막 시작하고, 과제나 작은 프로젝트를 하는 수준에서는 적절하지 못한 자료구조 선택이라는게 크게 와닿지 않을 것입니다. 데이터의 양이 작을 때는 체감이 힘들정도로 컴퓨터가 빨라져서 3중 for문을 써도 뭐가 잘 못 된지 모를 수 있습니다. 자료구조를 잘 못 선택하면 프로젝트가 커질수록 다루는 데이터가 많아 질수록 속도 저하와 예기치 못한 문제들을 만나게 될 수도 있습니다. 기능이 커지고 절차가 복잡해 질수록 알고리즘과 그 에 맞는 자료구조는 빛을 발합니다.

이 책에서 다루고 있는 자료구조와 알고리즘은 우리 선배 전산학도들께서 수많은 시행착오와 트러블 슈팅을 겪으면서 우리에게 정리 해주신 농축액라고 생각하시면 좋겠습니다. 여러분의 필요에 따라 자려구조를 개선해서 사용 할 수도 있고, 새로운 기능을 추가 할 수 있습니다. 여러분이 만나는 대부분의 상황은 여기있는 기본 자료구조만 숙지하고 있으면 충분히 해결 가능한 문제들입니다. 책의 정렬 알고리듬 파트에서 나오는 예시 처럼 제한 된 시간 내에 정렬 되어 있지 않은 30,000개의 데이터 중에 14,142 번째로 큰 데이터를 출력 해주기 위해서 어떤 자료구조로 데이터가 구성되고 정렬하고 탐색 해야 할 지 알고 연습이 되어 있어야합니다.

이 책의 유일한 단점은 스택을 자동 메모리, 힙을 자유 저장소, 데이터 영역을 정적 메모리로 기술하고 있는 부분이었습니다. 그런데 이 단점은 어느 정도 스택, 힙 등으로 배우고 불렀던 사람들에게 단점이지 프로그래밍을 입문한지 그리 오래 되지 않은 학습자라면 오히려 좋은 번역이라고 생가이 듭니다.

책을 읽으시면서 눈으로만 읽지 마시고 꼭 실습을 같이 하시기 바랍니다. 포인터를 다루는게 익숙하고 능숙하신 분들이 이 책을 읽을 확률이 낮기 때문에 이 책을 읽는 대부분의 독자는 포인터에 능숙하지 않은 분들일 것입니다. 상상 디버거로 머릿속으로 코드를 돌려가면서 책을 읽으실 수도 있지만 손으로 쓰고, 실행 직접 보시면서 숙달 하시기 바랍니다.


한빛미디어 2022 도서 서평단 "나는 리뷰어다"의 일원으로 도서를 제공받아 작성한 리뷰입니다.

오랜만에 자료구조에 관련된 책을 본다. 대학시절 배운게 끝이긴했는데 기억 잘 안나고... 프로그래머가 되려면 자료구조를 배워두면 도움이 많이 되긴 한다. 프로그램을 짤때 적절한 자료구조와 알고리즘이 필요하기 때문이다. 자료구조로 데이터를 효율적으로 관리하는 기법과 알고리즘과 상황별 알고리즘 설계기법을 배울 수 있는데 성능분석과 설계 그리고 이해하는데에도 도움이 되는 책이다. ​ 이 책의 구성은 학습목표로 핵심개념과 대략적인 학습흐름을 제시하여 목표를 세우고 연습문제로 배운것을 활용한다. 또한 보충설명, 참고사항, 관련용어를 설명하고 학습을 진행하면서 알아두면 좋은 내용이나 혼동하기 쉬운 내용을 설명하고 학습한 내용을 곧바로 점검할 수 있도록 간단한 퀴즈를 제시한다. 뭔가 대학때 1학년으로 돌아가 각잡고 교과서처럼 공부해야하는 도서라고 생각되었다. 컴퓨터가 전공인 대학생, 현업 프로그래머, 프로그램입문자가 보기에 좋은 책으로 추천한다. ​ "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이 책은 제가 본 자료구조, 알고리즘 책 중에 가장 괜찮은 책이라고 생각합니다. 예전 2009년에 처음 나왔던 ‘뇌를 자극하는 알고리즘’을 전면 개정하면서 제목도 바뀐 것으로 보입니다. 예전부터 사랑받고 검증된 내용이라 믿고 봐도 될 것 같습니다. 학교 다닐 때 저도 봤던 기억이 있는데 예전보다는 확실히 책이 더 깔끔하고 가독성이 좋아졌네요.

 

자료구조, 알고리즘이라는 것이 배우는 내용이 정해져있어서 목차를 보니 컴퓨터 공학과 시절에 배웠던 반가운 단어를 볼 수 있었습니다. 이 책은 크게 자료구조, 알고리즘, 알고리즘 설계 기법 이렇게 3부분으로 나눌 수 있습니다. 순서대로 보면서 공부하면 됩니다. 각각의 자세한 공부내용은 아래와 같습니다.

 

자료구조

리스트, 스택, 큐, 트리

 

알고리즘

정렬, 탐색, 우선순위 큐와 힙, 해시 테이블, 그래프, 문자열 탐색

 

알고리즘 설계 기법

알고리즘 성능 분석, 분할 정복, 동적 계획법, 탐욕 알고리즘, 백트래킹

 

이 책은 C언어를 사용해서 자료구조, 알고리즘을 설명합니다. 다른건 몰라도 자료구조, 알고리즘은 메모리를 직접 다루면서 배우는게 필요하기 때문에 괜찮은 선택이라 생각합니다. 여기에 나온 예제를 돌려보면서 이번 기회에 C언어도 배워보는 것을 추천하고 싶네요. C언어를 안다는 건 이직을 할때도 확실히 유리하다 생각합니다. 

 

거의 모든 공부가 그러하고 이 자료구조, 알고리즘도 확실히 뒤쪽이 더 어렵습니다. 라이브러리 사용만하는 개발에서 벗어나 내가 뭔가를 밑바닥에서부터 개발할 수도 있겠다는 마음으로 끈기를 갖고 하나 하나 도전하면 어떨까싶네요. 처음에 공부 가성비는 떨어질지 모르나 여기에 취미를 붙이면 컴퓨터가 돌아가는 방식을 좀 더 알게 되면서 더 나은 개발자로 확실히 레벨업을 시켜줄지도 모릅니다.

 

우리가 직접 자료구조, 알고리즘을 다룰 일은 생각보다 많지 않을 수도 있습니다. 하지만 배워야 하는 이유도 있습니다. 나중에 고급 개발자로 일하다보면 자료구조, 알고리즘 선택에 있어 도움이 되기 때문입니다. 만약 하드웨어를 직접 다루는 임베디드 개발자라면 직접 자료구조, 알고리즘을 수정하거나 다시 개발해야 할지도 모릅니다. 요즘은 구글과 같은 유명 인터넷 기업에서 코딩 테스트를 하는데 그것을 대비하기 위해서라도 자료구조, 알고리즘 공부는 필요합니다. 개발자가 되기위해서 필수는 아니지만 배워두면 반드시 도움이되는 공부라고 생각합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

책소개

이 책은 자료구조와 알고리즘 및 알고리즘의 설계 방법에 대해 기술하고 있는 책이다.

C언어로 완벽하게 구현된 코딩소스를 제공하기 때문에 C언어에 대한 기초 지식을

가지고 있어야 한다. 그래서 이 책은 알고리즘 뿐 아니라 C언어에 대한 내용까지도

한번에 배울 수 있는 책이기도 하다. 그렇다고 자바 개발자가 이 책을 읽지 말란 법은 없다

자바에서도 스택, 큐, 리스트는 엉청나게 많이 사용하고 있으니까 말이다.

그 내부 구조가 어떻게 구현되어 있는지 정확하게 이해할 수 있는 계기가 될거라 생각한다.


책은 처음부터 천천히 단계를 밟으며 설명하고 있다. 

각 chapter 마다 처음에는 스택, 큐, 리스트, 트리 등에 대해 기본내용을 설명하고 

그 자료구조를  C언어로 어떻게 구현하는지 보여주고 

그림을 이용하여 자료의 추가, 삭제 시 발생할 수 있는 구조 변경을 설명하고 있다.

이 표현 방법은 자료구조를 이해하는데 가장 좋은 방법이라고 생각한다.

모든 설명이 끝난 후 최종적으로 전체적인 예제 소스를 기술하고 있기 때문에

코드를 읽어 내려가면서 다시 한번 자료구조의 내용을 이해할 수 있게 구성되어 있다.


알고리즘을 설명하는 부분은 정렬과 탐색, 힙, 해시 테이블, 그래프등을 설명하고 있는데

개념을 이해하고 예제코드를 공부하면서 전부터 궁금했던 DBMS의 내부구조를 이해하는데

조금이나마 도움이 될 수 있었다.


알고리즘 설계 기법은 굉장히 흥미로운 부분이었다. 특히 백트래킹 부분의 미로탈출, 

8개의 퀸 문제는 아드레날린을 촉진시켜 오랫동안 구조의 논리를 생각하게 만들기 충분했다.

 

그래서...

거의 30년전 전공으로 C언어를 배울 때 정렬, 미로탈출하는 방법을 과제로 받곤 했었다.

그때부터 지금까지 자료구조의 핵심은 변함이 없다는 것을 다른 독자들은 알고 있을까?

이 책은 자료구조의 이해와 알고리즘의 설계 기법에 대해 적확하게 기술하고 있다.

이 책을 읽으면서 나는 30년전에 배우지 못한 분할정복, 동적 계획법, 백트래킹 등의 설계 기법을 다시금 

생각하게 하고 배우는 계기가 되었을 뿐아니라 자바로 개발하고 있는 현재 프로젝트에서

고객의 요구사항 중 응용할 방법에 대해 다시 고민하게 만드는 시간을 가지게 되었다.


초중급 대상의 독자에게 필요한 책이지만 자료구조와 알고리즘에 대해 막연했던 지식을 

정리하고자 하는 독자뿐 아니라 기본만 정리된 C언어 책을 공부한 독자가 C언어가 

어떻게 구현되는지를 알고 싶은, C언어를 잘 읽고 코딩하기를 원하는 독자에게도 

훌륭한 지침서가 될거라 생각한다.


개발자는 꼭 한번 자료구조와 알고리즘에 대해 알고 가기를 바란다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 
 

 

1-220827.jpg

 

 

 

IT기업에서 개발자를 뽑을 때 면접과 코딩 테스트를 보게 됩니다.

 

기업에서 테스트를 보는 이유는 자료구조와 알고리즘 개념이 있는지 확인하기 위함입니다.

 

작동 원리를 잘 알아야 개발할 때 활용을 할 수 있는데요.

자료구조와 알고리즘을 알아야 적절한 효율적인 코드를 작성할 수 있습니다.

 

살펴볼 책은 '이것이 자료구조+알고리즘이다 with C 언어'입니다.

 

자료구조, 알고리즘, 설계기법 등 15가지 개념을 다양한 연습문제로 풀어 볼 수 있습니다.

 

108개의 예제소스도 있어서 한번 혼자서도 풀어보고 예제소스를 참고하며 이해하며 공부할 수 있습니다.

 

C언어로 배워보는 자료구조와 알고리즘에 대해 같이 살펴보겠습니다.

 

 

3-220827.jpg

 

 

1) 쉬운 그림 설명과 학습을 돕는 퀴즈

복잡한 수식만 보면 알고리즘을 이해하기 쉽지 않습니다.

 

다양한 그림 예제를 통해 개념을 이해하기 쉽도록 구성되어 있습니다.

 

또한 장마다 비타민 퀴즈와 주제에 대한 연습문제는 학습을 도와줍니다.

 

수식은 필요한 정도만 담겼습니다.

 

자료구조는 유용한 리스트, 스택, 큐, 트리를 알려줍니다.

 

알고리즘은 가장 많이 쓰이는 정렬, 탐색, 우선순위 큐, 힙, 해시테이블, 그래프를 다룹니다.

 

 

2-220827.jpg

 

 

 

2)C언어로 배우는 자료구조

자료구조의 기초에 대한 간단한 설명과 구현 방법까지 배울 수 있습니다.

 

컴퓨터 전공 학생들도 학부 수업 중에 C언어를 배우게 될 텐데요.

C언어는 메모리를 잘 다뤄야 합니다.

 

포인터 개념과 구조체도 알아야 해석을 할 수 있습니다.

 

스택과 힙에서 데이터를 다루는 방법도 알아야 문제없이 코드가 작동하게 됩니다.

 

메모리를 직접 할당도 해주고 해지를 해줘야 합니다.

 

지정한 메모리보다 많은 메모리를 사용하면 프로그램은 죽게 되기 때문입니다.

 

 

 

 

Ps

자료구조와 알고리즘을 공부하다가 궁금한 부분이 생기게 됩니다.

 

저자는 Q&A 카페에 질문이 올라오면 직접 답변해줍니다.

 

문제를 만나면 직접 풀어보며 궁금한 것을 해결할 수 있습니다.

 

이 책은 C언어로 알고리즘 개념을 익힐 수 있도록 알려줍니다.

 

자료구조와 알고리즘 개념을 학습하고 제대로 이해하고 싶은 취업 준비생분들에게 이 책을 추천합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

image.png

 

 

자료구조 와 알고리즘에 대해 c언어 기반으로 다룬 책이다.

c를 기본적으로 문법은 익힌정도에서 넘어와야되는 책이고,알고리즘과 자료구조는 인터뷰시 단골 소재 이다.

그만큼 알고리즘과 자료구조를 이해하는 상태에서 코딩이 들어가면, 코딩에 녹아들어 좀더 좋은 코드를 만들어 낼 수 있다고 개인적으로 생각한다.

 

2.png

책에서 애기하는 학습로드맵이다.

 

 

 

 

자료구조와 알고리즘에 대해 이해를 하다보면 최종 알고리즘 설계기법까지 이해할수있는 로드맵을 제시하고

 

3.png

 

스택에 대한 구조에 대한 설명을 하고 있다.

해당설명과 같이 그림과 자세한 설명으로 독자의 이해를 돕고 있다.

4.png

 

 

실질적으로 많은 코드들의 예제들이 있어서 해당알고리즘이 어떻게 돌아가는지 c언어 기반으로 설명해준다.

단점은 코드에 대한 description 은 조금 부족한 느낌이 든다.

 

허나 코드는 부가적인것이고, 이해를 돕기위한 과정이라고 보면 설명은 쉽게 해주는 책이므로 자료구조나 알고리즘을 파악하는 목적에서는 좋은 책이다.

 

 

image (1).png

 

 

ming64 를 설치하여,vsc 에서 코드를 실행해보았다.

datset에 정보에서 구매포인트가 671.78 인 데이터를 바이너리 서치를 통해 찾아내는 알고리즘이다.

 

id :1780 에서 해당데이터를 찾을수가 있다.

책에서 설명하는 최단경로 탐색이나 문자열 탐색같은 부분은 실무에서도 충분히 활용가능한 알고리즘 들이다.

c언어를 활용한 자료구조와 알고리즘을 파악하는데는 이보다 좋은책은 없는것같다.

 

 

 

"한빛미디어 제공으로 작성된 리뷰입니다. "

 

이 책은 C언어를 이미 학습한 사람을 기준으로 자료구조와 알고리즘 중에 가장 필수적이고 기초적인 부분을 다루고 있습니다. 영어로 된 원서를 번역한 것이 아니라 실무자로서 업계에서 일했고 여러 책을 집필한 한국인 저자께서 쓰신 책이기에 글이 읽기 쉽고 책의 내용을 이해하기가 좋습니다. 또한 학습 중에 생길 수 있는 의문을 저자께서 '여기서 잠깐' 등의 명칭을 가진 섹션에서 풀고 있기에 학습을 끝까지 진행하는데 도움이 됩니다.

# 요약

+ C 로 자료구조를 기본부터 구현해가며, 메모리 관리/자료구조/알고리즘에 대한 이해를 넓힐 수 있음

+ 정렬, 탐색, 해싱, 그래프, dp 등 핵심적인 알고리즘 및 자료구조를 어떻게 C 언어로 구현할 것인지 배울 수 있음

# 장점

요즘 자료구조나 알고리즘은 파이썬으로 공부하는 경향이 있는데, C 언어로 직접 스택/힙 메모리를 관리하며 자료구조를 한 번쯤 구현해보는 경험은 전공자에게 있어서 매우 큰 자산이 된다. 그 한 번을 함께하기에 적합한 책이라는 생각이 든다.

---

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



파트 1에서 c언어 복습과 배열, 리스트, 스택, 큐, 트리의 개념과 이걸 어떻게 표현하는지 한다.

근데 포인터 때문에 진짜 울고 싶었다. 아직 처음인데 이렇게 읽기 싫어질 줄은 몰랐다.

C 언어는 정말 어쩔 수 없이 문제풀이를 위한 공부만 한 나로서는 이게 무슨 소리야... 싶었다.

 

알고리즘이라고 하면 좀 뭔가 거창하고 뭔가 새롭고 할 거 같았는데 파트 2에서 정렬 알고리즘(버블, 삽입, 퀵) 이 되게 낯이 익었다. (여전히 합격 못한...) 자격증 공부에서 문제 푸는 법만 익힌 그것이었다. 이게 알고리즘이라니 새로웠다. 약간 네가 왜 거기서 나와 느낌...?

자격증 공부하면서 문제풀이만을 위한 것만 공부했던 사람이 한번 읽어보면 어떨까 생각한다.



이 리뷰는 한빛미디어로부터 도서를 제공받은 후 작성했습니다.

 

 

이것이 자료구조+ 알고리즘이다 with C언어

개발 쪽에서 가장 유명한 출판사인 한빛미디어의 책이다.

이 책은 C언어를 기준으로 알고리즘과 자료구조를 설명한다.

 

 

컴퓨터 공학의 기본이 되는 자료구조, 알고리즘, 알고리즘 설계기법까지 알려주는 책이다.

리스트, 스택큐 같은 기초지식부터 점차 심화 단계로 올라간다.

트랙이 잘 나뉘어져있어 컴공 비전공자더라도 천천히 책을 따라가기 좋다.

 

 

이것이 자료구조+ 알고리즘이다 with C언어에선 자료구조의 기초, 개요, 간단한 설명과 

c언어로 구현하는 방법까지 알려준다.

C언어라 파이썬, 자바스크립트 등 다른 언어를 사용하는 사람이 따라하긴 쉽지 않지만

그래도 개념을 잡기 좋다.

컴퓨터공학 학부생이 읽기에도 좋을 것 같았다.

 

 

이것이 자료구조+ 알고리즘이다 with C언어에서는

간단한 자료구조 구현 외에도 그 자료구조를 이용해 짤 수 있는 

예제 프로그램들을 여럿 다룬다.

 

 

코딩테스트, 개발자 면접을 앞두고 

다회독하면 좋을 것 같았던

이것이 자료구조+ 알고리즘이다 with C언어.

 

코딩테스트 책으로 추천합니다

부록/예제소스
자료명 등록일 다운로드
DOWNLOAD 예제소스 2022-08-17 다운로드
결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

도서판매처

리뷰쓰기

닫기
* 도서명 :
이것이 자료구조+알고리즘이다 with C 언어
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
이것이 자료구조+알고리즘이다 with C 언어
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
이것이 자료구조+알고리즘이다 with C 언어
구입처*
구입일*
부가기호*
부가기호 안내

* 인터넷 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실