-
TIL#5. IT 5분 잡학사전 ep26-29TIL 2023. 10. 13. 09:14728x90
노마드코더의 북클럽 챌린지 IT 5분 잡학사전
오늘 읽은 내용
에피소드 26 - 정렬 알고리즘
에피소드 27 - 스택(Stack), 큐(Queue)
에피소드 28 - 해시테이블
에피소드 29 - 클린 코드
기억할 내용
- 정렬 방식: 버블 / 선택 / 삽입 => 시간복잡도는 같아도 평균적으로 빠른 알고리즘은 존재할 수 있음.
- 큐나 스택은 기존 프로그래밍 언어 문법으로 데이터를 저장할 때 어떤 규칙만 부여하기 때문에 실제로 형태가 있지 않음 (Abstract Data Type, ADT)
- 스택의 규칙: 위에서 데이터를 쌓는다. 위부터 데이터를 뺸다. => LIFO (Last in, First out) (팬케이크 쌓고 하나씩 먹기!)
- 큐의 규칙: 먼저 들어온 데이터가 먼저 빠져나감. 위로 데이터를 쌓는다. 아래부터 데이터를 뺀다 (버스정류장 먼저 온사람 순서로 줄 서고, 맨 앞사람부터 버스탐!) => FIFO (First in, First out). 선입선출 개념
- 웹 브라우저의 뒤로 가기 버튼은 스택. 맨 마지막 방문한 페이지를 뺴는 규칙
- 되돌리기 단축키도 스택. 마지막 실행 기록을 빼서 없애는것.
- 쇼핑몰 주문 처리 시스템은 큐. 주문이 들어오는 순서대로 데이터를 쌓고 가장 먼저 온 주문부터 처리.
- 배열 검색과 해시 테이블 검색의 시간 복잡도는 각각 O(N), O(1). 해시테이블에 데이터 추가, 삭제할 때도 동일=> 작업 효율이 좋음 (해시 충돌을 추가로 처리해야 한다면 항상 O(1)은 아닐 수 있음)
- 해시 테이블 속도의 비결은 해시 함수: 검색할 때 쓰는 키를 숫자, 즉 인덱스로 바꿔주는 역할
- 클린 코드: 설명이 필요 없는 코드
[클린 코드 원칙] *참고할 도서: 클린코드
1. 의미 있는 변수, 함수의 이름을 적절히 사용하기
2. 함수 이름은 가급적 동사로 짓기
function userData(){ } => userData가 무슨 함수인지 알수없음 function loadUserData(){ } => UserData를 호출하는 함수구나!
동사로 함수명을 지으면, 함수가 너무 많은 기능을 수행하고 있는지 알 수 있음. (함수는 1가지 역할만 해야 함)
3. 매개 변수를 너무 많이 쓰지 않기: 3개 이하가 좋음
4. Boolean 값(True or False)을 인자로 보내지 않기*
5. 축약어 사용 자제
생각과 메모
프로그래밍이든, 어떤 일이든 지치지않고 꾸준하게 하루하루를 채우는게 무엇보다 중요하다. 지난 몇달간 힘든 시기를 보내면서 깨달은 것은 멀어보이는 목표에만 집중하지말고, '하루'를 성실하게 잘 보내야한다는 것. 번아웃을 막고, 대처하기 위해 나는 이런 방식을 지키려고 한다.
1. 1년, 6개월, 3개월, 한달, 일주일 => 이 순서로 목표를 정하고, 그 주와 매일 해야하는 일들을 '너무 빡빡하지 않게' 계획하는 편이다. 큰 전지를 사서 손으로 적고 포스트잇을 붙여둔다.
2. 몰입하는 시간과 별개로 '의식적으로 떨어져서' 쉬는 시간과 운동하는 시간을 정해서 지키려고 노력. 회사를 다니지 않고 스스로 프로젝트를 이끌어야하기때문에 특히 더 관리가 필요한데, 쉴때는 집근처 산의 산책로를 걷고 초록색을 많이 눈에 담으려고 애쓰는 편이다.
https://nomadcoders.slack.com/archives/C04GZRR7D9P/p1697246613177239
728x90'TIL' 카테고리의 다른 글
TIL#7. IT 5분 잡학사전 ep35-38 (2) 2023.10.17 TIL#6. IT 5분 잡학사전 ep30-34 (2) 2023.10.15 TIL#4. IT 5분 잡학사전 (23) 2023.10.12 TIL#3. IT 5분 잡학사전 (1) 2023.10.11 TIL#2. IT 5분 잡학사전 (34) 2023.10.10