It 5분 잡학사전 노개북 Day 6
title: [IT 5분 잡학사전] 노개북 DAY 6 date: 2023-01-21 01:18:20.204 +0000 categories: [노개북] tags: [‘노개북’, ‘노마드북클럽’] description: DAY 6 Assignment 9
읽은 범위 : 에피소드 26 ~ 에피소드 29
기억하고 싶은 내용
- 기적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘은 있을 수 있다.
p.159
강의에서는 시간복잡도가 O(N^2)인 정렬들만 비교했지만, 시간복잡도가 O(NlogN)인 정렬간에도 평균적으로 빠른 알고리즘이 있을지 궁금해졌다.
→ 찾아보니 퀵소트가 일반적으로 가장 고성능을 보이지만, 최악의 경우 시간복잡도가 O(N^2)이 될 수 있다. 또한 불안정 정렬이기 때문에 데이터 성격에 따라 힙 정렬, 선택 정렬을 사용하는 경우가 있다.
스택과 큐 같은 자료구조는 정해진 문법이 따로 없다. 그저 배열(또는 리스트)에 큐의 규칙을 부여하면 그 배열은 큐라고 할 수 있다. 이런 개념을 추상 자료구조(abstract data type:ADT)라고 한다.
p.164
- 해시 테이블은 키와 값을 짝지어 모은 것이다.
p.167
파이썬의 딕셔너리와 같은 개념일까?
-> 찾아보니 파이썬에서는 동일한 개념이라 할 수 있다. 하지만, C, C# 등에서 두 개념을 구분하는 것 같다. 해시 테이블은 non-generic으로 아무 자료형으로 입력받을 수 있지만, 딕셔너리는 generic으로 정해진 타입의 자료형(strong)만 입력받는다. 내부적인 작동이 다를 뿐, 동일한 동작을 한다.
배열 검색은 선형 검색으로 O(N)의 시간복잡도를 갖지만, 해시 테이블은 O(1)이다.
p.168
클린 코드란 설명 및 주석이 필요 없는 코드를 말한다.
p.173
- 클린 코드 백서
p.174
- 의미 있는 변수, 함수의 이름을 적절히 사용하라 (86400 -> SECONDS_IN_A_DAY = 86400)
- 함수 이름은 가급적 동사로 지어라 (userData -> loadUserData)
- 매개변수는 너무 많이 쓰지 마라
- Boolean 값을 인자로 보내지 마라 (함수는 1가지 일을 한다는 규칙에 어긋남)
- 축약어를 쓰지마라
- 처음부터 코드를 클린하게 작성할 수는 없다. 잘 되는 코드를 막 쓰고 나중에 다듬는 작업을 하면 된다.
p.178
소감
스터디 중간중간 있는 퀴즈가 재미있고, 새삼 내 독서 태도를 반성하게 만들어주는 것 같다. 분명 다 읽고 잘 기억했다고 생각하는 내용이 생각지도 못하게 틀리고는 한다. hcj라는 단어를 보고 이게 뭔가 싶었는데, 책 내용에 HTML, CSS, Javascript를 합쳐서 hcj라 불렀었다는 것을 완전히 깜빡했다. 어제 있었던 퀴즈도 하나 틀려서 오늘은 좀 더 꼼꼼하게 읽으려 노력했던 것 같다. 퀴즈 최고!