📌오늘 TIL 3줄 요약
- 알고리즘별로 시간복잡도는 같아도 속도 차이는 날 수 있다!
- 해시테이블이 빠른 이유
- 클린코드를 위해 지켜야 할 기본적인 규칙들
🗓TIL (Today I Learned) 날짜
2023.11.18
📙오늘 읽은 범위
Ep 26. 정렬 알고리즘이 뭐죠?
Ep 27. 스택, 큐가 뭐죠?
Ep 28. 해시 테이블이 뭐죠?
Ep 29. 개발자 필수 소양, 클린 코드!
🔖책에서 기억하고 싶은 내용을 써보세요.
- 알고리즘별로 시간복잡도는 같아도 속도 차이는 날 수 있음! : 초기 데이터 상태에 따라 처리 속도가 달라질 수도 있기 때문에 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘은 있을 수 있음.
- 해시테이블이 빠른 이유 : 해시함수 덕분!
- 해시함수란? 해시테이블 검색시 사용하는 키를 인덱스로 바꿔주는 함수. 그러므로 배열에서 인덱스로 접근할 때처럼 원하는 값에 다이렉트로 접근할 수 있음.(해시테이블의 시간복잡도는 O(1))
- 하지만 해시테이블의 시간복잡도가 항상 O(1)인 것은 아님! 서로 다른 내용의 데이터가 같은 키값을 가리키는 해시 충돌이 일어나는 경우도 있기 때문임.
- 해시 충돌 해결방법에는 대표적으로 '체이닝'과 '개방주소법'이 있음.
- 체이닝 : 각각의 해시테이블 인덱스에 해당하는 자료구조를 연결리스트로 만드는 방법. 이를 통해 중복되는 키값을 연결리스트로 계속 추가해나가는 방식임.
- 개방주소법 : 충돌이 일어나면 해시테이블의 비어있는 공간에 값을 삽입하는 방식. 개방주소법에는 대표적으로 3가지 방법이 있음.
- 선형 탐색 : 해시 충돌 시 다음 버킷, 다음 버킷이 비어있지 않다면 몇 개 건너 뛰어서 데이터를 삽입.
- 제곱 탐색 : 해시 충돌 시 제곱만큼 건너뛴 버킷에 데이터를 삽입.
- 이중 해시 : 해시 충돌 시 다른 해시 함수를 한 번 더 적용한 결과를 이용함.
- 클린코드를 위해 지켜야 할 기본적인 규칙들
- 의미있는 변수, 함수의 이름을 적절히 사용하라
- 함수 이름은 가급적 동사로 지어라
- 매개변수는 너무 많이 쓰지 마라 : 매개 변수가 많다는 것은 그만큼 그 함수가 복잡하다는 것! 가급적 함수는 하나의 기능만 수행하도록 만들자.
- Boolean값을 인자로 보내지 마라 : Boolean값을 매개변수로 받는다는 건 참인지 거짓인지에 따라 다르게 처리한다는 뜻이므로 하나의 함수에서 두가지 일을 처리해야함. 잊지말자, 함수는 되도록 하나의 일만 처리하도록 만들자!
- 축약어를 쓰지 마라 : 나만 알 수 있는 축약어는 사용하지 말아야 함! 코드의 가독성을 해침!
🤗오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 오늘은 몸이 안 좋아서 책 내용이 머리에 잘 안 들어왔다...🥺 내일 다시 읽어봐야겠다...
🍪 Cookie
<내가 번아웃을 극복하는 방법>
