본문 바로가기

일상/서평

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

반응형

코딩을 하는 이유 자체가 문제를 해결하기 위함인데요.

자료구조를 배우는 목적도 문제 해결 능력을 키워주기 때문입니다.

그래서 전공과목으로 자료구조와 알고리즘을 학습하게 되죠.

이 책은 C언어 기반으로 자료구조와 알고리즘을 학습할 수 있게 만들어진 책입니다.

이번에 한빛미디어에서 출간한 책으로 예제 소스도 제공해 줘서 학습하는 데 도움을 받을 수 있어서 좋네요.

컴퓨터공학에서 자료구조를 학습하는 이유가 뭘까요?

자료 구조는 데이터를 효율적으로 조직하고 관리할 수 있게 도와주기 때문입니다.

컴퓨터 프로그램은 효율을 중요시하는데요.

이렇게 구조화시키면 프로그램의 성능이 향상되고 메모리도 적게 사용하기 때문에 자료구조 학습을 필수로 하는데요.

 
 

책에서 말하는 것처럼 더 나은 개발자로 레벨 업하기 위해

자료구조를 공부하는 사람들도 있습니다.

그렇지만 딱딱한 전공 서로 학습하다 보면 너무 지루해서 공부할 마음을 놓게 되는데요.

이런 분들에게 자료구조와 알고리즘을 재미있게 학습할 수 있는 책이 출간되었네요.

 

저자인 박상현 선생님은 소프트웨어 엔지니어로 근무하며 다양한 책을 집필할 경험이 있는데요.

대한민국학술원 우수학술도서로 선정할 정도로 좋은 책을 출간한 분입니다.

2020년 세종 도서 학술부문에 선정되기도 하였습니다.

 
 

자료구조는 알고리즘을 구현하는 데 사용됩니다.

특정 작업이나 문제를 해결하는 알고리즘은 종종 특정 자료구조에 의존하기 때문에, 알고리즘을 이해하고 구현하기 위해서는 자료구조에 대한 이해가 필수적입니다.

책에서는 자료구조와 알고리즘을 처음부터 배우고자 하는 사람들의 눈 높이에 맞춰 리스트부터 백트래킹까지 재미있게 이야기로 설명해 주고 있습니다. 복잡한 수식은 최소화하고 한눈에 볼 수 있게 그림을 많이 넣었고요.

실행해 보면서 알고리즘을 이해할 수 있도록 다양한 소스를 예제 파일로 제공해 줍니다.

 
 

이 책은 자료구조와 알고리즘 학습을 통해 더 나은 개발자가 되려는 분들을 위해 만들어진 책입니다.

챕터 1은 자료구조에서 시작합니다.

자료구조의 개념과 알고리즘에 대한 정의, 그리고 C언어에서 메모리를 다루는 방법을 설명합니다.

효율적인 메모리 관리는 컴퓨터 프로그램의 성능에 큰 영향을 미칩니다.

그래서 자료구조를 통해 메모리를 효율적으로 할당하고 해제할 수 있는 방법을 배워야 하는데요.

그만큼 중요한 부분이라 처음 시작할 때 개념 이해를 시키려고 하는 것 같네요.

 
 

처음 자료구조를 배우게 되면 int를 학습합니다.

int 역시 자료구조인데요.

int를 대표로 longk, double.. 등의 구조는 단순구조로,

선형과 비선형으로 나뉘는 복합 구조로 나뉘게 됩니다.

기본적으로 선형 구조는 배열, 링크드 리스트, 스택, 큐, 힙이고요.

비선형은 트리와 그래프입니다.

 
 
 

왜 자료구조를 배워야 할까요?

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

동일한 ADT를 사용하더라도 자료구조에 따라 애플리케이션 성능이 크게 달라질 수 있습니다.

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

다시 말해 자료구조를 모르면 알고리즘을 공부하는데 어려움이 따릅니다.

알고리즘은 9세기 페르시아 수학자 알 콰리즘의 이름에서 유래되었는데요.

어떤 문제를 풀기 위한 단계적 절차(문제 풀이 절차)를 가리킵니다.

이 세상에 다양한 문제가 존재하듯 그 문제를 풀 때 사용할 수 있는 알고리즘 또한 다양합니다.

리스트는 우리 삶에서 자주 사용됩니다.

전화기에 저장된 연락처, 죽기 전에 꼭 해보고 싶은 일을 담은 버킷 리스트,

구매한 물품을 정리한 장보기 목록 등 그 용도도 다양합니다.

리스트는 목록 형태로 이뤄진 데이터 형식입니다.

리스트의 목록을 이루는 개별 요소를 노드라고 부르는데요.

노드 목록에서 첫 번째 노드를 헤드라고 부르고 마지막 노드를 테일이라고 부릅니다.

리스트의 길이는 헤드부터 테일까지 이르는 노드 개수입니다.

책에서는 복잡하게 설명하기보다는 소설책을 읽는 것처럼 쉽게 이해할 수 있는 언어로 소개해 줍니다.

그래서 처음 자료구조를 배우는 사람들에게 추천하는데요.

전공서적 참고용으로 보시는 것을 추천합니다.

 
 

이론적인 내용을 학습한 후에는 이렇게 예제 프로그램이 나옵니다.

예제 소스를 한빛미디어에서 다운로드할 수 있는데요.

책에서 소개하는 링크 주솟값을 참고해서 다운로드하실 수 있습니다.

 
 

스택은 원래 건초나 짚더미처럼 뭔가를 쌓아 올린 더미를 뜻합니다.

스택 ADT도 데이터를 바닥에서부터 쌓아 올리는 구조로 되어 있습니다.

건초 대신 데이터를 쌓아 올리는 것입니다.

스택에서 데이터 입/출력은 스택의 꼭대기에서만 이루어집니다.

스택 가운데 있는 데이터를 삭제하거나 새로운 데이터를 입력하는 일은 허용되지 않습니다.

스택의 맨 아래 데이터를 꺼내려면 그 위에 있는 모든 데이터를 걷어내야 합니다.

 
 

책은 개념 정의에서 시작해서 예제를 통해 개념을 이해하도록 만들어 주고요.

그 후에는 소스를 풀어 문제를 풀 수 있게 도와줍니다.

자세한 가이드를 제공하고 있어서 자료구조와 알고리즘을 학습하려는 전공과 학생들에게 추천하는 책입니다.

반응형