【Python】 파이썬 자료구조와 알고리즘 - 교재 서평
[파이썬 자료구조와 알고리즘] 교재 정리 내용 입니다.
1. Immutable 과 mutable
[https://webnautes.tistory.com/1181] 이 사이트에 설정이 매우 자세히 나와 있다. 설명을 요약하자면 다음과 같다.
a = 1 // 변수 a와 1은 별개의 존재입니다.
여기서 a는 변수이고 1은 객체이다. 변수는 단순히 객체를 가리킬 뿐이다.
mutable 객체 : list, set, dict
객체를 생성한 후, 객체의 값을 수정 가능, 변수는 값이 수정된 같은 객체를 가리키게됨.
=연산자를 사용해 copy한 것은 얕은 복사이다. (copy by reference)
immutable 객체 : int, float, complex, bool, string, tuple, frozen set
객체를 생성한 후, 객체의 값을 수정 불가능, 변수는 해당 값을 가진 다른 객체를 가리키게됨.
=연산자를 사용해 copy한 것은 깊은 복사이다. (copy by value)
[그림은 이 사이트 참조 : https://ledgku.tistory.com/54]
2. float숫자끼리의 비교
다음과 같은 문제 때문에 함부로 비교하거나 빼면 안된다.
>> 0.2 * 3 == 0.6
False
>> 1.2 - 0.2 == 1.0
True
>> 1.2 - 0.1 == 1.1
False
이 문제를 해결하기 위해, unittest모듈의 assertAlomostEqual과 같은 메소드를 사용하는 방법도 있다.
하지만 이렇게 문제해결하는 것은 근본적 문제 해결이 아니므로 ‘최대공약수 찾기’와 같은 방법을 사용해야 할 것이다.
더 좋은 방법으로는 decimal 모듈을 사용하는 것이다. [from decimal import Decimal]
3. 숫자 연산에 필요한 메소드
divmod(x,y) : return (x//y, x%y)
rount(x,n) : return 소수점 n자리에서 반올림한 수 return
4. assert
assert 조건문 : 조건문의 결과가 True가 아니면 Error를 발생시킨다.
[https://wikidocs.net/21050]
5. 가장 기본적인 알고리즘 코드
\1. 진법 변환 :
\2. 최대공약수 :
\3. 소수 :
\4. numpy 패키지 :
공부를 위해 해당 페이지 참고 : [http://aikorea.org/cs231n/python-numpy-tutorial/#numpy]
**<이 책에="" 대한="" 나의="" 생각="">**이>
이 책은 코딩테스트를 위해 좋은 책은 아니다. 코딩 테스트를 준비하기 위해서는 차라리 고득점 킷을 풀어보고, 문제를 풀어보면서 ‘이러한 방법으로 풀면 좋다(완전탐석 DFS HEAP 등)’ 라는 것을 인터넷에서 찾아가며 공부하는 것이 훨씬 좋다.
대신 이 책은 면접을 위해 좋은 책이다. 그리고 파이썬을 통한 프로그램 개발자가 알아두면 좋은 책이다. 알고리즘을 개발하고 프로그램을 개발하는 사람이라면 기본적으로 알아두면 좋은 책이다.
하지만 웹 웹 개발자, 딥러닝 모델 개발자가 알아두면 좋은 책인가? 그건 아니다. 이러한 개발자들은 다른 사람들이 만들어 놓은 모듈을 잘 이용하는 것이 더 중요하다.
따라서 지금 이 책을 공부하는 것은 때가 아니다. 우선 코딩테스트 준비를 완벽하게 하고 난 후에, 어느 정도 여유가 생기고, 공부해야겠다는 생각이 들면, 공부하는 것이 좋을 듯 하다.
이 책에는 몇가지 중요한 메소드(맴버함수)들이 소개되지만, 어차피 책을 통해 공부한다고 한들 무조건 까먹고 나중에 당연히 검색을 해야한다. 따라서 지금 책을 읽어 메소드들을 머리속에 암기하려는 행동보다는 코딩테스트를 준비하면서 유용했던 메소드들을 차근차근 공부하고 기억해나가는 것이 더 좋을 듯 하다.
따라서 지금 이 책은 한 동안 읽지 않으려고 한다. 대략 4개월 정도 후에 공부할 필요성이 느껴진다면 그 때가서 공부를 해야겠다. 지금은 맨 위에서 말했던 대로, [1. 고득점 킷 2. 코딩테스트 기출을 풀면서 몰랐던 이론과 구현법 공부.] 를 해야겠다.