[노개북] Day 09 - Ep.26~29

우루리·2023년 11월 18일

📌오늘 TIL 3줄 요약

  • 알고리즘별로 시간복잡도는 같아도 속도 차이는 날 수 있다!
  • 해시테이블이 빠른 이유
  • 클린코드를 위해 지켜야 할 기본적인 규칙들


🗓TIL (Today I Learned) 날짜

2023.11.18


📙오늘 읽은 범위

Ep 26. 정렬 알고리즘이 뭐죠?
Ep 27. 스택, 큐가 뭐죠?
Ep 28. 해시 테이블이 뭐죠?
Ep 29. 개발자 필수 소양, 클린 코드!


🔖책에서 기억하고 싶은 내용을 써보세요.

  • 알고리즘별로 시간복잡도는 같아도 속도 차이는 날 수 있음! : 초기 데이터 상태에 따라 처리 속도가 달라질 수도 있기 때문에 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘은 있을 수 있음.
  • 해시테이블이 빠른 이유 : 해시함수 덕분!
    • 해시함수란? 해시테이블 검색시 사용하는 키를 인덱스로 바꿔주는 함수. 그러므로 배열에서 인덱스로 접근할 때처럼 원하는 값에 다이렉트로 접근할 수 있음.(해시테이블의 시간복잡도는 O(1))
    • 하지만 해시테이블의 시간복잡도가 항상 O(1)인 것은 아님! 서로 다른 내용의 데이터가 같은 키값을 가리키는 해시 충돌이 일어나는 경우도 있기 때문임.
    • 해시 충돌 해결방법에는 대표적으로 '체이닝'과 '개방주소법'이 있음.
      • 체이닝 : 각각의 해시테이블 인덱스에 해당하는 자료구조를 연결리스트로 만드는 방법. 이를 통해 중복되는 키값을 연결리스트로 계속 추가해나가는 방식임.
      • 개방주소법 : 충돌이 일어나면 해시테이블의 비어있는 공간에 값을 삽입하는 방식. 개방주소법에는 대표적으로 3가지 방법이 있음.
        • 선형 탐색 : 해시 충돌 시 다음 버킷, 다음 버킷이 비어있지 않다면 몇 개 건너 뛰어서 데이터를 삽입.
        • 제곱 탐색 : 해시 충돌 시 제곱만큼 건너뛴 버킷에 데이터를 삽입.
        • 이중 해시 : 해시 충돌 시 다른 해시 함수를 한 번 더 적용한 결과를 이용함.
  • 클린코드를 위해 지켜야 할 기본적인 규칙들
    • 의미있는 변수, 함수의 이름을 적절히 사용하라
    • 함수 이름은 가급적 동사로 지어라
    • 매개변수는 너무 많이 쓰지 마라 : 매개 변수가 많다는 것은 그만큼 그 함수가 복잡하다는 것! 가급적 함수는 하나의 기능만 수행하도록 만들자.
    • Boolean값을 인자로 보내지 마라 : Boolean값을 매개변수로 받는다는 건 참인지 거짓인지에 따라 다르게 처리한다는 뜻이므로 하나의 함수에서 두가지 일을 처리해야함. 잊지말자, 함수는 되도록 하나의 일만 처리하도록 만들자!
    • 축약어를 쓰지 마라 : 나만 알 수 있는 축약어는 사용하지 말아야 함! 코드의 가독성을 해침!

🤗오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 오늘은 몸이 안 좋아서 책 내용이 머리에 잘 안 들어왔다...🥺 내일 다시 읽어봐야겠다...





<내가 번아웃을 극복하는 방법>

0개의 댓글