노개북 챌린지 day9 시작합니다!
8일차는 복습 겸 퀴즈데이여서 블로깅 패스-!
오늘 읽은 범위 : 에피소드 26~29
책에서 기억하고 싶은 내용
정렬 알고리즘
- 버블정렬
- 배열의 왼쪽부터 시작해서 값 두개를 비교, 큰값을 오른쪽으로 한칸씩 밀면서 정렬.
- 위의 과정을 한 사이클이라고 하며 모두 정렬될때까지 사이클 반복 수행
- 선택정렬
- 전체 데이터 중 가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식
- 자리를 바꾸는 연산이 사이클당 1번으로 버블정렬보다는 효율적
- 삽입정렬
- 앞에있는 데이터를 보면서 배치하는 특성이 있음.
- 앞에있는 데이터와 하나씩 비교하여 데이터가 작으면 해당 위치에 밀어넣음.(한사이클)
- 선택정렬, 버블정렬보다 빠름.⇒ 속도의 차이가 있지만 세 방법 모두 시간복잡도는 O(N²)
스택, 큐
스택과 큐는 기존 프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙을 부여하기만 하면 되는 추상 자료구조다.
- 스택
- 팬케이크 쌓기 규칙.
- 위에서 데이터를 쌓고 데이터를 뺄때도 위에서 부터 (LIFO 방식 - last in, first out)
- ex) 웹 브라우저 뒤로가기, 되돌리기 단축키 등등…
- 큐
- 버스정류장 줄서기와 비슷
- 위로 데이터를 쌓고 아래에서부터 데이터를 뺀다.(FIFO 방식 - first in, firts out)
- ex) 쇼핑몰 주문 처리 시스템 등등…
해시테이블
- 키와 값을 짝지어 모은것. 시간복잡도는 O(1)
- 해시함수 : 검색할때 쓰는 키를 인덱스로 바꾸어줌.
클린코드
- 코드를 읽기만 해도 이해할 수 있는 설명이 필요없는 코드
- 의미잇는 변수, 함수의 이름을 적절히 사용해라
- 함수는 가급적 동사로 네이밍 할것 ⇒ 함수가 과도하게 많은 기능을 수행하는지 검토할 수 있음.
- 매개변수는 너무 많이쓰지말것 ⇒ 불가피하게 많이 설정해야한다면 컴피겨레이션 오브젝트 사용
- boolean값을 인자로 보내지 말것 ⇒ 함수는 한가지 일만 잘해야한다는 규칙을 생각하기
- 축약어를 쓰지 말 것. 다른사람이 볼때 알아볼 수 없는 축약어 사용은 지양해야함.
소감 및 떠오르는 생각
오늘 읽은 분량 중에 가장 와닿았던 에피소드는 클린코드에 관련된 ep.29이다.
어느정도 경력이 쌓인 개발자는 자기만의 규칙이 있어서 과거에 만들었던 함수를 수정하게 되더라도 해석하는 시간이 오래걸리지 않는다고 들었다.
나는 아직 나만의 코딩규칙이 명확하지 않아서 매번 스크립트를 짤때마다 다른 스타일로 구성하게 되는데 이게 추후에 수정작업을 어렵게 만든다.
맛보기로 확인한 클린코드 꿀팁을 참고해서 누구나 쉽게 알아볼 수 있는 코드를 짜고싶다!!
그리고 클린코드라는 책에 관심이 생겼다. 조만간 읽어봐야지
궁금한 내용
정렬 알고리즘의 종류에 대한 설명부분에서 세가지 알고리즘의 시간복잡도가 모두 같지만 처리속도가 다르다고 했다.
그 이유는 알고리즘은 초기 데이터 상태에 따라 처리속도가 달라지기 때문이라고 했는데 초기 데이터 상태가 무엇을 뜻하는지 잘 모르겠다. 🤔
해시테이블은 객체와 비슷한 느낌인건가? 오늘 배운 개념들은 조금 생소했던 것들이라 이해가 쉽지 않다. 따로 더 찾아봐야겠다.
세줄요약
- 알고리즘은 초기 데이터 상태에 따라 처리속도가 달라진다.
- 스택은 last in, first out 큐는 first in, first out !
- 클린코드는 설명이 필요없는 코드
오늘의 미션
게더타운에서 니꼬쌤 찾기!
'Read-ing' 카테고리의 다른 글
[노개북 DAY12] IT 5분 잡학사전 (0) | 2023.09.05 |
---|---|
[노개북 DAY10] IT 5분 잡학사전 (1) | 2023.09.03 |
[노개북 DAY7] IT 5분 잡학사전 (0) | 2023.08.31 |
[노개북 DAY6] IT 5분 잡학사전 (0) | 2023.08.30 |
[노개북 DAY5] IT 5분 잡학사전 (0) | 2023.08.29 |