Post

It 5분 잡학사전 노개북 Day 6

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라 불렀었다는 것을 완전히 깜빡했다. 어제 있었던 퀴즈도 하나 틀려서 오늘은 좀 더 꼼꼼하게 읽으려 노력했던 것 같다. 퀴즈 최고!

This post is licensed under CC BY 4.0 by the author.