IT리뷰

알고리즘 인사이드 with 파이썬(2023.10.19)

jb213 2023. 11. 26. 23:40

 

책은 파이썬 기본문법의 핵심을 먼저 다룬 뒤, 기본 자료구조와 알고리즘을 복습하고, 각 알고리즘별 문제를 풀어보는 구성이다. 

알고리즘 문제 파트는 2개로 되어 있는데 첫번째 파트가 재귀, 탐색 등 좀 더 자주 나오는 분야로 구성되어 있고 두번째 파트가 트리나 동적계획법 등 좀 덜 나오는 분야로 되어 있다.

관련한 리트코드도 기재되어 있어 참고할 수 있다. 

 

chapter 1 : 파이썬 기본 문법

-데이터 타입 : numeric(int, float, complex), sequence(list, tuple, range), set, map(dict), text(str), misc(bool, bytes, none)

각 데이터 타입으로 할 수 있는 특정 작업이 있으니 점검해보는 것도 나쁘지 않겠다. 

 

숫자형 : 0b를 붙이면 2진수 가능. 0b10. 2진수로 계산할 때 편리한 경우가 있다. 

숫자 앞에 0o를 붙이면 8진수(0~7) ex. 0o15 => 5 + 1*8 = 13

숫자 앞에 0x를 붙이면 16진수. 0xF => F는 16진수에서 15를 의미한다. 

 

 

메서드 : 클래스에 속한 함수

함수 : 클래스와 상관없이 독립적으로 존재

 

10진수를 2진수의 문자열로 변경 {:b}

 

set은 배타적 논리합을 ^로 찾을 수 있음 예) a ^ b

 

이 밖에도 기본 파이썬 문법에 대해 핵심(데코레이터, 코루틴, 클래스, 상속, 멀티프로세싱)만 잘 짚어주기 때문에 코드를 구성하는 방법을 짚기에 좋다.

이후 정규식도 짚고 넘어가니 확인해보면 좋겠다.

 

chapter 2 : 기본 자료구조와 알고리즘

알고리즘-스택, 큐, 트리, 해시, 그래프, 검색, 정렬, 우선순위 큐, Radix 트리

기본 자료구조

스택 : 후입선출. ctrl z와 같다는 좋은 비유. 구현도 간단. 리스트로 충분히 스택 가능

큐: 선입선출

냅다 자료구조를 배울 때는 구현 코드를 왜 알아야 되는지 귀찮아했던 적이 있다. 

그런데 자료의 구조가 어떻게 되는지, 그리고 그 구조에 따라서 어떻게 해당 구조를 이용해야 되는지를 알아야 되더라.

큐의 경우 예를 들자면 원형 큐의 경우 3의 길이라면 버퍼의 크기는 4로 설정해야 한다. 3번째 원소를 저장하고 front와 rear가 같은 곳을 가리키면 큐가 빈 것을 의미하는 것과 같기 때문이다(큐가 비지 않았고 is full상태이므로).

따라서 이 경우 원형큐가 가득 찼는지 알려주는 is_full 함수가 필요하다. 

 

연결리스트 : 원형 큐처럼 고정 크기가 아닐 때 사용

-단일 연결 리스트 : 노드는 next 링크 하나

-이중 연결 리스트 : next와 앞쪽 노드를 가리키는 pre 링크 2개. 순차적으로 값을 검색. 대규모 데이터엔 적합 x. 가변 크기 큐에 적합.

 

트리

-트라이 : prefix tree. 자식 노드의 개수에 제한이 없고 키값의 대소 관계를 파악하여 값을 찾는 것이 목적이 아님. 

               문자 혹은 문자열을 저장하고 빠르게 검색하는 용도. 

 

자료구조를 읽으면 알겠지만 실무에서 이 알고리즘이 어떻게 사용되는지 설명하는 부분이 유익했다. 보통은 이런 알고리즘을 실제와 동떨어진다고 생각하는 경향이 있으므로..

 

기본 알고리즘

: 이 파트도 정렬(각 정렬 유형), 그래프 등의 알고리즘을 구현하는 코드를 제시하게 각 코드를 어떤 식으로 구현해야 하는지 설명한다. 앞서 자료구조에서도 그런 식으로 설명을 해주며, 실제로 어떤 문제를 풀 때 사용되는지도 알 수 있다.

 

 

기존에 알고리즘 기초 문제를 어느 정도 숙지한 사람이라면 이 책을 통해 파이썬 기본 문법 지식도 다시 한번 복습하면서 저자가 엄선한 문제를 어떤 문제의식을 갖고 풀어야 되는지 확인할 수 있겠다.

 

 

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