확장메뉴
주요메뉴


소득공제
미리보기 공유하기

쓰면서 익히는 알고리즘과 자료구조

: 알고리즘 설계 캔버스를 작성하며 배우는 알고리즘 문제 해결 전략

리뷰 총점9.4 리뷰 18건 | 판매지수 564
베스트
프로그래밍 언어 top100 1주
12월의 굿즈 : 로미오와 줄리엣 1인 유리 티포트/고운그림 파티 빔 프로젝터/양털 망토담요 증정
월간 개발자 2022년 12월호
[대학생X취준생] 끝날 때 까지 끝난 게 아니야!
[IT 기획전] IT, 모두의 교양
2022 올해의 책 24권을 소개합니다
박해선 저자의 머신러닝/딥러닝 패스
내일은 개발자! 코딩테스트 대비 도서전
12월의 얼리리더 주목신간 : 행운을 가져다줄 '네잎클로버 문진' 증정
[단독] 에듀윌 IT 자격증 기획전 - 가장 빠른 합격출구 EXIT
책 읽는 당신이 더 빛날 2023: 북캘린더 증정
쇼핑혜택
현대카드
1 2 3 4 5

품목정보

품목정보
출간일 2021년 03월 29일
쪽수, 무게, 크기 388쪽 | 188*235*30mm
ISBN13 9791162244104
ISBN10 1162244100

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

직접 써보며 이해하는 가장 효율적인 알고리즘 문제 해결 과정

알고리즘과 자료구조를 가장 효율적으로 학습할 수 있는 방법은 무엇일까? 바로 노트에 직접 알고리즘 문제 해결 과정을 써보면서 이해하는 것이다. 이 책은 ‘알고리즘 설계 캔버스’ 작성을 통한 문제 해결 과정을 보여준다. ‘알고리즘 설계 캔버스’는 제한사항, 아이디어, 복잡도, 코드, 테스트 영역으로 구성된 한 페이지짜리 노트로 일련의 알고리즘적 사고 과정을 보여주는 최적의 학습 도구이다.

각 장은 다양한 알고리즘과 자료구조(배열, 문자열, 연결 리스트, 스택, 재귀, 큐, 트리, 동적 프로그래밍, 정렬 등)의 기본적인 내용을 소개한 뒤, 관련 문제를 ‘알고리즘 설계 캔버스’의 항목별 내용을 쓰면서 풀어본다. 이 책을 통해 ‘알고리즘 설계 캔버스’를 직접 작성하면서 알고리즘과 자료구조의 이해를 넓혀 개발 역량을 키우고 코딩 인터뷰까지 대비해보자.

목차 목차 보이기/감추기

들어가며

chapter 1 배열(Array)

1.1 배열의 이해
1.2 파이썬에서 배열(리스트) 사용법
1.3 두 수의 합 찾기
1.4 정렬된 배열에서 중복 제거
1.5 배열에서 삽입 위치 찾기
1.6 정렬된 배열의 병합
1.7 정렬된 배열의 정합
1.8 파스칼의 삼각형
1.9 배열에서 다수의 요소 찾기
1.10 배열의 회전
1.11 빠진 숫자 찾기
1.12 더 나아가기 위한 준비
1.13 부분집합(subsets)
1.14 단어 찾기

chapter 2 문자열(String)

2.1 문자열의 이해
2.2 파이썬에서 문자열 사용법
2.3 회문(Palindrome) 확인
2.4 그룹 애너그램(anagram)
2.5 IPv4 / IPv6 검증 시스템

chapter 3 연결 리스트(Linked List)

3.1 연결 리스트의 이해
3.2 연결 리스트 연산
3.3 연결 리스트 문제
3.4 연결 리스트 뒤집기
3.5 순환 검출(Cycle Detection)
3.6 두 수 더하기

chapter 4 스택(Stack)과 재귀(Recursion)

4.1 스택의 이해
4.2 재귀(Recursion)의 이해
4.3 유효한 괄호 검증
4.4 재귀 연습문제
4.5 재귀 연습

chapter 5 큐(Queue)

5.1 큐의 이해
5.2 큐 연습

chapter 6 트리(Tree)

6.1 트리 자료구조의 이해
6.2 이진 트리(Binary Tree)
6.3 깊이 우선 탐색(Depth-First Search)
6.4 너비 우선 탐색(Breadth-First Search)
6.5 이진 힙(Binary heap)
6.6 트리 경로의 합
6.7 3번째 큰 수
6.8 이진 트리 반전
6.9 이진 검색 트리 검증

chapter 7 동적 프로그래밍(Dynamic Programming)

7.1 동적 프로그래밍의 이해
7.2 동일 합으로 배열 분할 문제
7.3 동전 교환
7.4 최장 공통부분 수열(Longest Common Subsequence)

chapter 8 정렬(Sorting) 알고리즘

8.1 거품 정렬(Bubble Sort)
8.2 삽입 정렬(Insertion Sort)
8.3 병합 정렬(Merge Sort)
8.4 퀵 정렬(Quick Sort)
8.5 팀 정렬(Tim Sort)

Appendix 부록
부록 A 알고리즘 문제 제공 사이트
부록 B 알고리즘 연습을 위한 노트 방법
부록 C 파이썬을 이용한 문제 풀이
부록 D 알고리즘 학습을 위한 사이트 소개

저자 소개 (1명)

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

알고리즘 공부 어떻게 해야 할까?
배경지식은 충분히 공부했는데, 왜 알고리즘 문제에 접근조차 못 할까?


알고리즘 문제 해결 능력의 핵심은 ‘알고리즘적 사고력’입니다. 알고리즘적 사고력을 키우기 위한 가장 좋은 방법은 알고리즘 문제를 풀 때 여러 전략을 고민하고 해결 과정을 직접 노트에 써보는 것입니다. 한 페이지짜리 ‘알고리즘 설계 캔버스’는 이런 프로세스를 쓰기 좋은 학습 도구입니다. 제한사항, 아이디어, 복잡도, 코드, 테스트 영역으로 구성된 ‘알고리즘 설계 캔버스’는 일련의 알고리즘적 사고 과정을 명확하게 보여줍니다. 이 책은 ‘알고리즘 설계 캔버스’의 요소별 내용을 완성해가며 문제를 풀이합니다. 직접 ‘알고리즘 설계 캔버스’를 작성하면서 알고리즘 문제 해결 과정을 단계별로 따라가봅시다.

알고리즘 설계 캔버스 구성 요소

-제한사항(Constraints): 알고리즘 문제의 요구와 제한사항을 발견하고 기록하는 영역
-아이디어(Ideas): 문제를 해결할 수 있는 1~3개 정도의 접근 방법을 고려하는 영역
-복잡도(Complexities): 생각한 아이디어의 시간과 공간 복잡도를 추정하는 영역
-코드(Codes): 아이디어 영역에서 논의한 내용을 바탕으로 구현할 가치가 있다고 생각한 방법을 코드로 작성하는 영역
-테스트(Test cases): 구현된 코드의 테스트 케이스를 알아보고 코드 테스트를 진행하는 영역
-이 책의 코드는 파이썬 기반으로 작성되었습니다.
-예제 소스: github.com/daeseokyoun/learn-algorithm-by-writing

베타리더의 말

허민 _한국외국어대학교 정보지원처
다른 알고리즘 서적과 달리 몇 가지 차별화된 전략이 인상 깊었습니다. 노트 레이아웃(알고리즘 설계 캔버스)으로 사고 과정을 적어보고 비주얼라이저를 활용해 중간 단계를 눈으로 보며, 구현 과정의 상세한 도식화로 이해하는 과정 덕분에 알고리즘이라는 매운 양파 껍질을 하나 더 벗겨낸 느낌을 받았습니다.

이준희 _가천대학교 학부생
알고리즘 공부를 시작하는 학생이고, ‘쓰면서 익히는’이라는 제목에 끌려 베타리딩을 신청했습니다. 문제를 풀기 전 생각을 정리하게 해주는 노트 레이아웃(알고리즘 설계 캔버스), 과정을 보여주는 상세한 그림과 설명, 그리고 공부 후 다시 찾아보게 되는 노트 덕에 쉽게 다가갈 수 있었습니다.

장대혁 _헤르스
이 책은 단순히 코딩 테스트를 위한 책이 아닙니다. 좋은 코드를 만들기 위해 알아야 하는 자료구조를 배울 수 있습니다. 수준 있는 개발자가 되기 위해서는 이런 공부가 필요합니다. 오래오래 개발자로 커리어를 이어가고 싶다면 이 책을 3번 읽고 개발 역량(좋은 코드 작성하기)과 취업 역량(코딩 테스트 통과하기) 모두 향상시키길 바랍니다.

김병진 _위메프
이 책은 개발을 하면서 직면하는 문제에 어떤 접근 방식으로 해결할 수 있는지 생각해보고, 어떤 알고리즘을 적용할 수 있는지에 대해 설명해줍니다. 그리고 그 방법이 절대 하나일 수 없다는 듯 하나 이상의 접근 방법으로 제시해주고 있어 다양한 접근 방식에 대한 사고를 할 수 있도록 도와줍니다. 이 책은 알고리즘을 처음 배우는 초심자에게 좋은 가이드 역할을 할 것이라고 생각합니다.

회원리뷰 (18건) 리뷰 총점9.4

혜택 및 유의사항?
포토리뷰 도서 리뷰_쓰면서 익히는 알고리즘과 자료구조 내용 평점5점   편집/디자인 평점5점 i******n | 2021.05.24 | 추천0 | 댓글0 리뷰제목
"쓰면서 익히는 알고리즘과 자료구조"를 리뷰합니다.     자료구조나 알고리즘 도서를 떠올리면 오래전부터 몇 권의 도서를 읽었기 때문에 공통된 목차의 포맷적인 부분이나 어떤 내용을 다룰지가 예상되는 부분이 어느 정도 있다. 그럼에도 불구하고 자료구조와 알고리즘 도서를 읽는 것은 즐겁다. 특히 근래에 출간되는 도서들은 나름의 특색이 있고 저자들의 노하우나;
리뷰제목

"쓰면서 익히는 알고리즘과 자료구조"를 리뷰합니다.

 

 

자료구조나 알고리즘 도서를 떠올리면 오래전부터 몇 권의 도서를 읽었기 때문에 공통된 목차의 포맷적인 부분이나 어떤 내용을 다룰지가 예상되는 부분이 어느 정도 있다. 그럼에도 불구하고 자료구조와 알고리즘 도서를 읽는 것은 즐겁다. 특히 근래에 출간되는 도서들은 나름의 특색이 있고 저자들의 노하우나 공략 포인트를 담고 있어서 읽는 재미가 있다. 다른 한편으로는 분명 실무에 많이 사용되고 있으나 아직도 정복하지 못한 부분이 많이 있기 때문에 배움의 관점으로 얻는 즐거움이 있다.

 

쓰면서 익히는 알고리즘과 자료구조는 두가지 의외의 부분이 있었는데, 커널과 BSP 경력을 가진 저자가 파이썬을 기반으로 자료구조와 알고리즘을 다웠다는 점과 상당히 책이 얇은 책이다…라고 생각을 했는데 370 페이지가 넘는다는 점이다. 후자에 대해서 말을 하자면 이렇게 얇은 책이면 특정 자료구조나 알고리즘만을 다룰 것이다…라고 예상을 했는데 의외로 많은 부분은 다루고 있고, 이것은 목차만 봐도 대부분의 자료구조를 다루고 있지 않는가…

 

1. 배열(Array)

2. 문자열(String)

3. 연결리스트(Linked List)

4. 스택(Stack)과 재귀(Recursion)

5. 큐(Queue)

6. 트리(Tree)

7. 동적 프로그래밍(Dynamic Programming)

8. 정렬(Sort) 알고리즘

 

무엇보다 이 책의 특징은 “알고리즘 설계 캔버스를 작성하며 배우는 알고리즘 문제 해결 전략”라는 부제에 맞춰 문제해결에 대한 다양한 아이디어를 중점으로 서술하고 있다는 부분이고, 이것을 위해서 저자는 알고리즘 설계 캔버스를 구성하자고 제안하고 있다.

 

이것은 Constraints와 Ideas, Complexities, Test cases와 코드를 이용하여 구성하고 있다. 매 챕터에서 단순히 자료구조를 배우고 마무리 하는 것이 아니고, 문제 해결을 다양하게 접근해보자, 다양하게 접근하기 위해서 설계 캔버스를 작성하여 효율성 높은 해결 방법을 도출해보자는 내용이다.

가령 가장 처음 나오는 두 수의 합 찾기에 대해서는 시간 / 공간 복잡도를 구성해보고 해당 아이디어를 코딩하는 것으로 시작해서, 또다른 접근 방법으로 해시 테이블을 사용하는 방법을 제안한다. 앞서 말했듯이 근래의 자료구조/알고리즘 도서는 자신만의 특색을 갖추고 있는 경향이 있는데, 이것이야 말로 이 책의 특색이자, 저자가 포커스해서 독자에게 전달하고자 했던 의도일 것이고 그제서야 서문에서 밝힌 지은이의 말에 많은 공감되었다.

 

 

장점은 문제 해결에 대해서 다양한 방법을 생각하고 시도해보도록 제시하는 내용의 흐름으로 본문을 구성한 점이 너무 좋았습니다. 익숙히 알고 있는 자료구조에 대해서 이러한 플롯으로 다양한 시도를 유도하는 저자의 의도가 느껴져서 번역서가 아닌 국내 저자에 의해서 이러한 도서가 쓰여졌다는 점이 너무 좋았네요. 단점이라고 말하기는 애매하지만, 자료구조와 알고리즘의의 A-to-Z를 기대하고 본 도서를 선택했다면 목적과는 부합되지 않았을거라는 생각이 듭니다.

 

자료구조와 알고리즘이 나름 방대한 분야여서 비록 자료구조에 익숙하더라도 이 책의 의도대로 다양한 방법으로 문제해결을 시도하려고 한다면 읽는 즐거움을 느낄 수 있는 책이었습니다.

 

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

댓글 0 이 리뷰가 도움이 되었나요? 공감 0
"쓰면서 익히는 알고리즘과 자료구조" 리뷰 내용 평점5점   편집/디자인 평점5점 치**맨 | 2021.05.23 | 추천0 | 댓글0 리뷰제목
[장점] - 알고리즘 해결 과정에 대한 이해 이 책을 통해 알고리즘 해결 과정에 대한 이해를 할 수 있습니다. 매번 아래와 같은 과정을 통해 알고리즘을 해결합니다. 그렇기 때문에 다른 문제를 만나도 아래 과정처럼 알고리즘 해결을 할 수 있는 능력을 키울 수 있습니다. 1. 문제 설명 가장 먼저 해결해야할 문제를 설명합니다. 2. 제한사항 파악 문제에서 제안사항을 파악하고;
리뷰제목

[장점]

- 알고리즘 해결 과정에 대한 이해

이 책을 통해 알고리즘 해결 과정에 대한 이해를 할 수 있습니다. 매번 아래와 같은 과정을 통해 알고리즘을 해결합니다. 그렇기 때문에 다른 문제를 만나도 아래 과정처럼 알고리즘 해결을 할 수 있는 능력을 키울 수 있습니다.

1. 문제 설명

가장 먼저 해결해야할 문제를 설명합니다.

2. 제한사항 파악

문제에서 제안사항을 파악하고 도출합니다.

3. 아이디어

문제에 대한 설명과 파악한 제한사항을 이용하여 아이디어를 생각합니다. 가장 먼저는 단순한 아이디어를 생각해보고 그 다음엔 더 효율적인 아이디어를 생각해봅니다.

4. 구현

아이디어를 실제 코드로 구현해봅니다.

5. 테스트 케이스

다양한 테스트 케이스를 통해 제대로 동작하는 지 확인해봅니다.

- 다양한 문제 풀이

이 책에는 배열, 문자열, 연결 리스트, 스택과 재귀, 큐, 트리, 동적 프로그래밍, 정렬과 같은 큰 카테고리에 다양한 문제들을 제공하고 있습니다. 이를 통해 기본적인 알고리즘 해결 능력을 기를 수 있습니다.

- 파이썬

파이썬 코드를 통해 알고리즘 해결하는 방법을 제공합니다. 파이썬을 공부하고 싶거나 파이썬 언어로 알고리즘 공부를 하는 분들에게 좀 더 적합한 서적이 아닐까 생각합니다.

[총평]

좀 더 효율적인 개발을 위해서는 알고리즘과 자료구조를 이해하는 것은 굉장히 중요합니다. 그리고 실제 업무 영역에 있어서 내가 알고 있는 알고리즘과 자료구조를 적절한 곳에 적용하는 것도 굉장히 중요합니다. 그래서 지속적으로 공부하고 연습해야하는 것이 알고리즘과 자료구조가 아닐까 생각합니다. 이 책은 노트를 이용한 레이아웃을 통해 알로리즘과 자료구조를 이용한 문제 해결 방법을 제시하고 있습니다. 그리고 실제 문제 해결을 하는 방법을 과정을 통해 설명하고 있습니다. 알고리즘를 어떻게 해결해야하는지 막막한 분들이라면 이 책이 그 가려운 부분을 긁어줄 수 있는 대안이 되지 않을까 생각합니다. 그리고 파이썬을 통해 알고리즘을 해결하는 방법을 보여주고 있어 파이썬을 공부하려는 분들에게는 좀 더 도움이 되지 않을까 생각합니다.

댓글 0 이 리뷰가 도움이 되었나요? 공감 0
쓰면서 익히는 알고리즘과 자료구조 내용 평점5점   편집/디자인 평점5점 l***v | 2021.05.23 | 추천0 | 댓글0 리뷰제목
  알고리즘 문제들을 여러 방법, 자료구조를 이용하여 해결하는 과정을 설명하고 있다. 알고리즘 해결에는 요즘 많이 사용하는 파이썬을 사용하고 있는데, 문제 풀이에는 복잡한 문법은 없어 평소에 파이썬을 사용하지 않아도 어렵지 않게 코드를 이해할 수 있었다. 실제로 어떤 문제를 접했을 때 해결해 나가야 하는 순서대로, 긴 문장보다는 간결한 코드와 그림을 많이 사용하;
리뷰제목

 

알고리즘 문제들을 여러 방법, 자료구조를 이용하여 해결하는 과정을 설명하고 있다.

알고리즘 해결에는 요즘 많이 사용하는 파이썬을 사용하고 있는데, 문제 풀이에는 복잡한 문법은 없어 평소에 파이썬을 사용하지 않아도 어렵지 않게 코드를 이해할 수 있었다.

실제로 어떤 문제를 접했을 때 해결해 나가야 하는 순서대로, 긴 문장보다는 간결한 코드와 그림을 많이 사용하려 하고 있어 전체적으로 술술 읽히는 느낌이 난다고 생각한다

 

 

 

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

한줄평 (2건) 한줄평 총점 9.0

혜택 및 유의사항 ?
구매 평점4점
한번 읽어볼만 합니다
이 한줄평이 도움이 되었나요? 공감 0
k*****k | 2022.02.05
평점5점
'노트 레이아웃'을 이용한 알고리즘과 자료구조 문제 풀이
이 한줄평이 도움이 되었나요? 공감 0
YES마니아 : 로얄 로* | 2021.05.23
  •  쿠폰은 결제 시 적용해 주세요.
1   23,400
뒤로 앞으로 맨위로 aniAlarm