노마드 개발 북클럽 “IT 5분 잡학사전” 2주 챌린지
(23.11.10 ~ 23.11.24)
11/18 SAT, Assignment # 09
🔖 오늘 읽은 범위 : 에피소드 26 ~ 에피소드 29
1. 책에서 기억하고 싶은 내용은?
✏️ 정렬 알고리즘이 뭐죠? (에피소드 26)
✓ 시간 복잡도는 같으면서 성능은 다른 정렬 알고리즘 3가지
1. 왼쪽, 오른쪽만 보면서 정렬하는 버블 정렬
2. 하나를 콕 집어 가며 정렬하는 선택 정렬
3. 앞에 있는 데이터를 보면서 배치하는 삽입 정렬
➡️ 모두 시간 복잡도는 O(N²)으로 같지만 속도 차이는 난다!
“시간 복잡도가 같다고 한 것은 시간 복잡도를 단순히 측정했을 때 그렇다는 뜻이었어. 하지만 알고리즘은 초기 데이터 상태에 따라 처리 속도가 달라진다는 특징도 있어. 그래서 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘은 있을 수 있다는 거야.”
“달달달 암기할 필요는 없어! 중요한 건 콘셉트를 이해하는 거야. 정렬에는 어떤 작업이 필요하고, 시간 복잡도는 상황에 따라 다를 수도 있다는 이런 콘셉트!”
✏️ 해시 테이블이 뭐죠? (에피소드 28)
“해시 테이블은 키와 값을 짝지어 모은 것인데, 이를 통해 우리가 데이터를 더 쉽게 정리할 수 있게 해줘. (해시 테이블은 사전에 비유할 수 있어. 키는 사전에서 단어를, 값은 단어의 뜻을 말해.)”
배열인 상태에서 라떼의 가격이 얼마인지 알고 싶다면? 배열의 데이터를 처음부터 모두 확인(선형 검색)해야 할 거야. 하지만 이 방법은 시간이 오래 걸려.해시 테이블을 이용하면 라떼 가격을 선형 검색할 때보다 빠르게 알아낼 수 있어.
만약 라떼 가격을 알고 싶다면 모든 데이터를 다 찾는 게 아니라 라떼를 검색하면 돼. 그러면 12가 값으로 나오지. 배열을 전체 검색할 때와 비교하면 해시 테이블의 시간 복잡도는 얼마나 차이가 날까?
➡️ 선형 검색의 시간 복잡도는 O(N)이야. 하지만 해시 테이블은? 무려 O(1)이야. Big-O 표기법으로 표현할 수 있는 가장 빠른 시간(상수 시간)이지! 쉽게 말해 해시 테이블에서는 어떤 값을 찾더라도 딱 한 단계만 거쳐. 데이터를 추가, 삭제할 때도 O(1)이니까 검색 외 다른 작업에서도 효율이 엄청 좋지!
✏️ 개발자 필수 소양, 클린 코드! (에피소드 29)
“클린 코드란 설명이 필요 없는 코드를 말해. 코드를 읽기만 해도 이 코드가 무슨 일을 하는지, 어떤 것을 의미하는지 물어볼 필요도 없이 스르륵 이해되는 그런 코드말이지.
클린 코드는 협업에서 무척 중요해.
잘 실행되면서 부연 설명을 하지 않아도 이 코드만 봐도 충분히 설명할 수 있는 상태! 클린 코드는 그런 것이야. 기억하라고!”
<클린 코드를 위한 5가지 꿀팁!>
1. 의미 있는 변수, 함수의 이름을 적절히 사용하라.
2. 함수 이름은 가급적 동사로 지어라
3. 매개변수는 너무 많이 쓰지 마라.
4. 불린값을 인자로 보내지 마라
5. 축약어를 쓰지 마라
2. 오늘 읽은 소감은?
정렬 알고리즘과 해시 테이블 등 조금은 생소했던 개념들에 한발자국 익숙해진 시간이었다. 버블정렬, 삽입정렬, 선택정렬 모두 시간복잡도는 같았지만, 속도 차이가 있다는 것이 아직은 어려운 것 같다. 해시 테이블 또한 개념은 알겠는데, 그래서 이걸 어떻게 활용하는거지? 라는 생각이 들었다. 역시 알고리즘은 쉽지 않구나, 개념 정도 알았을 뿐인데 이마저도 헷갈린다니! 암기할 필요없이 이런 컨셉을 이해하는 것이 중요하다는 말에서 위안을 받는다. 🥲
클린코드 이야기도 재미있었다. 이번 원티드 프리온보딩 강의 주제가 “클린코드”였는데, 마침 읽고 있던 책에서도 나와서 반가웠다. 클린코드란 뭘까? “클린코드란 설명이 필요없는 코드, 코드를 읽기만 해도 이 코드가 무슨 일을 하는지, 어떤 것을 의미하는지 물어볼 필요도 없이 스르륵 이해되는 그런 코드” 이 정의가 명확하고 한번에 이해되어서 좋았던 것 같다.
'Frontend Dev > Input' 카테고리의 다른 글
[IT 5분 잡학사전 2주 챌린지] 프로그래밍 패러다임과 객체지향 프로그래밍 (0) | 2023.11.22 |
---|---|
[IT 5분 잡학사전 2주 챌린지] 코볼 개발자를 찾는다구요? (👥 코볼이 뭔데..? 👥👥) (0) | 2023.11.19 |
[IT 5분 잡학사전 2주 챌린지] 자료구조와 알고리즘은 필수라고? (0) | 2023.11.16 |
[IT 5분 잡학사전 2주 챌린지] 서버리스가 뭘까? (0) | 2023.11.15 |
[IT 5분 잡학사전 2주 챌린지] 공부는 기한을 가지고 하자! (0) | 2023.11.15 |