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

한빛미디어

독자리뷰

알고리즘 입문자 or 중급자에게 추천 드리는 책

jrcfore***

|

2022-11-27

똑똑한 코드 작성을 위한 실전 알고리즘

파이썬 예제를 실행해보면서 컴퓨터 과학의 핵심 알고리즘과 문제 해결법을 익히는 책

  • 저자 : 조지 하이네만
  • 번역 : 윤대석
  • 출간 : 2022-05-20

 

알고리즘의 기초 학습이 부족하다고 생각되는 분께 추천드리는 책임을 밝힌다.

​

이 책은 여느 책들과 비슷하게 알고리즘의 기초에서 시작하여 그 내용을 점점 심화하는 구성으로 이루어져 있다. 하지만 이때껏 필자가 리뷰하였던 책들과 다른 점이 있다면 파이썬을 이용해 우리가 일반 개발에서 사용되는 알고리즘의구체적인 내용들을 잘 정리하여 설명하고 있다는 점이다.

​

또한 인상적인 부분이 있다면 바로 각 알고리즘별 퍼포먼스를 잘 정리하여 술 하였다는 점이다. 가령 단계적으로 알고리즘을 최적화해가면서 퍼포먼스가 얼마나 향상되는지. 그리고 input case의 사이즈가 증가해감에 따라서 알고리즘의 특정 부분의 차이에 따른 퍼포먼스 격차가 얼마나 커지는지등을 잘 술하고 있다.

​

이런 부분에 대한 벤치마킹은 웬만한 책들에서는 이렇게 디테일하게까지 정리하지 않는 편인데, 이 책에서는 그런 내용들까지도 꼼꼼히 정리하여 독자들에게 제공하고 있다는 점에서 상당히 인상적이었다.

​

그렇기에 파이썬에 대한 언어의 기본적인 틀을 어느 정도 알고 있고, 컴퓨터프로그래밍 코드를 이용하여 기본적인 메인 루프를 구동해 본 경험이 있는 사람들이라면 이 책을 통해 충분히 알고리즘에 대한 가르침을 충만히 얻을수 있을 것이라 생각된다.

​

【책의 구성】 '똑똑한 코드 작성을 위한 실전 알고리즘'은 어떤 책일까?

​

 솔직히 이 책은 알고리즘 기본기가 튼튼하게 쌓여있는 사람이학습하기에는 내용이 막입문하는 초급자 혹은 기본기를 튼튼히 하고자 하는 중급자에게 포커싱이 되어 있어서 썩 만족스러운 학습이 되지 않을 가능성이높다.

​

그렇기에 막 입문하려는 알고리즘 초보자나 혹은 기초를 다시금 튼튼히 하고자 하는 중급 수준의 알고리즘 풀이 능력을가진 분들이 학습하길 권한다.

​

또한 파이썬으로 알고리즘 풀이를 갈아타신 분들께서도 이 책을 통해 파이썬을 이용한 알고리즘 풀이에 대한 스킬을익히면 유용하지 싶다.

​

다만, 보통의 알고리즘 대회에서는 통상적으로 C/C++과 같은 native language를 활용한 풀이를 많이제출한다는 점을 명심하자. 왜냐하면 native Language 코드로구동한 (어셈블을 제외한) 알고리즘의 퍼포먼스는 아직 다른언어들에서 그 근사까지는 추적하였어도 그것들을 능가한 경우는 없는 것으로 알고 있기 때문이다.

 

1 장 : 문제 해결

​

 알고리즘의 개념을 몇 가지 예를 들어가며 친절히 설명하고있다. 

​

첫 예제로 가장 큰 값 찾기가 언급되었는데, 이는 알고리즘의 다른책들에서도 많이 사용하는 예제이므로 참고해두면 좋을 듯하다.

​

또한 책 내용에 설명을 돕는 그림들이 많이 있기 때문에, 그림을 심도있게 살펴봐두었다가 추후 자신만의 알고리즘을 구축할 때 응용하면 충분한 퍼포먼스 향상을 이뤄낼 수 있을 것이라 생각된다.

 

2장: 알고리즘 분석

​

 이 장에서는 알고리즘의 성능 분석에 대한 관점과 성능 분석등에 대한 내용을 잘 술하고 있다.

​

이 부분이 솔직히 알고리즘 테스트나 알고리즘 면접을 준비하는 과정에서 제일 간과하기 쉬운 부분이다. 따라서 Big O Notation에 따른 시간 복잡도가 어떤 식으로변화하는지 그리고 이러한 알고리즘으로 1s 동안 몇 개의instruction set을 처리할 수 있는지 꼼꼼히 알아두도록 하자.

​

보편적으로 1초에 1억개의 instrution set이 수행될 수 있다고 가정한다. 다만현대의 CPU는 훨씬 정교해지고 최적화가 하드웨어 단에서부터(ALU) 잘 되어 있기 때문에 위의 통상의 기준이 더 이상 통용되지 않을 수 있음도 참고해두자.

 

3~7 장 : 보편적인알고리즘

​

 학부에서 배울법한 알고리즘들은 3~7장에 모두 정리되어 있다. 따라서 스텝별로 꼼꼼히 학습해 보도록하자.

​

알고리즘은 언어를 떠나서 추상화 개념을 충분히 잘 인지하기만 하면 모든 언어에서 같은 형태로 구현이 가능하다. 따라서 책에서 묘사하고 있는 설명을 위한 그림들을 잘 머릿속에 새겨 넣어 두도록 하자.

 

【 똑똑한 코드 작성을 위한 실전 알고리즘을 읽고 나서.. 】

​

 알고리즘은 책의 서문에서 번역을 맡으신 윤대석님의 말씀처럼하루아침에 고수가 될 수 있는 그런 학문이 아니다. 

​

알고리즘 주제 하나만으로도 "도널드 리누스"는 몇 백 페이지에 이르는 책을 총 8권(아직 5권 정도 밖에 출간되지 못했다.)이나 집필하였기에 이러한 점만 보아도 해당 학문의 분야가 상당히 세분화되어있고 깊이가 상당하다는 것을 알 수있다.

​

그렇기에 알고리즘을 잘하기 위해서는 튼튼한 기초 위에 다양한 문제들을 주기적으로 학습함으로써 알고리즘과 관련된두뇌의 영역을 강화할 수밖에 없다.

​

또한 알고리즘은 단순히 문제만을 푸는 과정이 아니다. 알고리즘을 푼다는것은 하나의 프로그램 전체를 설계하는 과정과 같다고 할 수 있다. 특히나 검색과 같은 부분에 있어서키워드를 입력할 때 연관 키워드를 노출해 주기 위해서는 스트링의 부분과 매칭되는 유사 키워드들을 DB 등에서추려서 사용자에게 노출시켜야 한다. 이때 이러한 노출 부분의 스트링을 취득하는 과정에서 우리가 배웠던알고리즘들이 도입되게 된다.

​

즉, 알고리즘을 잘한다는 것은 한 프로그램의 전체를 이해하고 그 깊이를심도 있게 분석하여 이전과는 다른 훨씬 진보된 하나의 최적화된 프로그램을 잘 만들 수 있음을 간접적으로 증명하는 것과 같다.

​

따라서 하루에 한문제, 많으면 3문제. 매일매일 알고리즘 문제를 푸는 습관을 들이도록 하자.

​

필자의 경우를 예로 든다면, 필자는 릿 코드를 통해 알고리즘 스터디를즐겨 하는 편이다.

 

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

 

닫기

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