파이썬으로 각종 자료구조 구현할때, 파이썬 내장 기능들을 많이 쓰잖아요
예를들어 list1 = []; 이렇게 선언해서 append를 쓴다던가 인덱스로 각 항목에 접근한다던가..
근데 좀 여기서 의문이 드는게... 이런거 막써도되나? 입니다
자료구조 1장에서 알고리즘 복잡도 이런거 읽어보면... 솔직히 거의 와닿지않고 기본연산같은것도 정의하지도 않고 설명해서
완전날림이라고 생각이 되는데, 그와중에 대충이해한거는 " 아무튼 뭐던간에 컴퓨터 연산을 줄이자! " 라는거 같아요.
근데 파이썬으로 자료구조를 구현할때 list 자료형의 강력한 기능들을 막갔다 쓴단말이죠.
근데 이거.. 그러면 연산횟수를 줄이자는 의미가 있긴한가 느낌이듭니다.
예를들어 f(self)라는 메소드를 막 복잡하게 짜두고선, 다른 메소드에서 f()하나 쓰곤 이 메소드 연산횟수가 1이다
라고 주장하는꼴 아닌가요?
요약
1. 파이썬에서 각 자료구조(큐,링크드리스트,트리등)을 구현할때 파이썬 내장기능(특히 리스트의 기능들(인덱스접근, append, 등등))을 가져다쓰는데
이래도 되는건가?
2. 프로그래밍 강의하시는 교수님한테 여쭤봤는데 요즘은 성능이 워낙좋아져서 성능보다는 라이브러리 공부가 주류가 된 느낌이라고 얘기하심
collections 라는 라이브러리에 자료구조들이 거의다 구현되있다고 하던데.. 자료구조 공부할 필요가 있을지 조언구합니다.
시간복잡도 검색 ㄱㄱ ㅇㅅㅇㅋㅋㅋ
걍 쓰면 됨
그래서 파이썬에서 리스트/큐/딕셔너리가 비슷하면서도 시간복잡도가 달라서 이런건 알아보고 쓰는게 좋음
시간복잡도는 연산 횟수의 문제가 아님 l.sort() 하면 O(1)이 아니고 O(nlogn)인 거임
근데 보통 이런 내장 함수나 메소드는 그 일을 수행하기 위한 최적의 시간복잡도로 구현되어 있으니 보통은 걍 쓰면 됨