오늘 TIL 3줄 요약
- LIFO 스택과 FIFO큐 규칙만 지키면 되는 추상 자료구조(ADT)
- 프로그램의 속도를 더 바르게 만들 수 있는 해시 테이블
- 클린코드 매우중요 꼭읽어라! 깨끗한 코딩은 모두가 행복해지는 지름길!
TIL (Today I Learned) 날짜
2023.01.21
오늘 읽은 범위
에피소드 26 정렬 알고리즘이 뭐죠?
에피소드 27 스택,큐가 뭐죠?
에피소드 28 해시 테이블이 뭐죠?
에피소드 29 개발자 필수 교양 클린코드!
책에서 기억하고 싶은 내용을 써보세요.
[에피소드26 정렬 알고리즘이 뭐죠?]
- 1. 버블정렬 : 왼쪽 오른쪽만 보면서 정렬, 실제로 많이 사용하지않음.
- 2. 선택정렬 : 하나를 콕 집어가며 정렬, 가장 적은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식으로 작업
- 3. 삽입정렬 : 앞에 있는 데이터를 보며 배치하는 정렬, 특징은 교환을 하는것이 아닌 밀어넣는것.
- 삽입정렬은 버블, 선택정렬보다 빠르다.
[에피소드27 스택,큐가 뭐죠?]
- 큐(queue)나 스택(stack)이라는 자료구조는 배열처럼 실제로 존재하는 개념은 아니다.
- 기존프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙만을 부여하기만 하면 됨.
- 배열에 큐의 규칙을 부여하면 그 배열은 큐라고 할수 있다. 이런 개념을 추상 자료구조(ADT)라고 한다.
- 팬케이크 같은 스택의 규칙 1. 위에서 데이터를 쌓는다. 규칙 2. 위에서부터 데이터를 뺀다. 이방식을 LIFO(Last In First Out)이라고 한다. 마지막으로 들어간것이 처음으로 나온다.라는 뜻 처음구운 팬케이크가 밑에 쌓이고 마지막으로 구운케이크를 제일 먼저 먹는것처럼!
- 실제로 스택은 뭘로 구현해도 상관이 없고, 규칙만 지키면 된다.
- 버스정류장으로 생각하는 큐의 규칙 1. 위로 데이터를 쌓는다. 규칙 2. 아래에서 부터 데이터를 뺀다. 오랫동안 기다린사람이 가장 먼저 타는것을 생각해라! 이방식을 FIFO(First In First Out)
- 스택과 마찬가지로 뭘로 구현해도 상관없고, 규칙만 지키면 된다.
- 스택의 사용 : 웹브라우저의 뒤로가기 버튼, 되돌리기 단축키
- 큐의 사용 : 쇼핑몰 주문처리 시스템
[에피소드28 해시 테이블이 뭐죠?]
- 해시테이블은 키와 값을 짝지어 모은 것
menu = [ // 배열로 저장
{name : "아메리카노" , price : 10},
{name : "초코라떼" , price : 8},
{name : "딸기스무디" , price : 15},
{name : "카푸치노" , price : 12},
];
menu = { // 해시 테이블로 저장
아메리카노 : 10,
초코라떼 : 8,
딸기스무디 : 15,
카푸치노 : 12,
};
- 배열은 데이터를 처음부터 모두확인(선형검색) 해야 검색가능. 해시테이블은 검색어를 바로 캐치 한다.
- 선형검색의 시간복잡도는 O(N²), 해시테이블은 O(1)이다.
- 해시 테이블의 속도 비결 > 해시함수 : 글자 수를 그대로 인덱스로 반환하도록 구성. 해시충돌시 바로 같은 인덱스에 또 다른배열을 넣어서 다시 선형검색을 해서 찾음.
[에피소드29 개발자 필수 교양 클린코드!]
- 클린코드를 위한 5가지 꿀팁
클린코드 : 코드를 읽기만 해도 이코드가 무슨일을 하는지 어떤것을 의미하는지 물어볼 필요도 없이 이해되는 설명이 필요없는 코드
1. 의미 있는 변수, 함수의 이름을 적절히 사용해라.
setInterval (eatKimchi , 86400); //무슨숫자인지뭐름
☞ const SECONDS_IN_A_DAY = 86400; //하루를 초로 바꾼값인걸 알게됨
☞ setInterval (eatKimchi , SECONDS_IN_A_DAY );
2. 함수 이름은 가급적 동사로 지어라.
☞ function userData(){ } //무슨 함수인지모름
☞ function loadUserData(){ } // 사용자 데이터를 호출하는 함수 인것을 알수있음.
3. 매개변수는 너무 많이 쓰지 마라.
불가피하게 변수를 많이 설정해야 한다면 컨피겨레이션 오브젝트라는 방식으로 매개분수를 묶어 전달.
☞ function makePayment(price, productId, size, quantity, userId){ ..생략..}
makePayment(35, 5, "xl",2,"nico")
☞ function makePayment({price, productId, size, quantity, userId}){..생략..} // 함수 파악하기 좋음
makePayment({
price: 35,
productId: 5,
size: "xl",
quantity: 2,
userId: "nico",
})
4. 불린값을 인자로 보내지 마라.
5. 축약어를 쓰지 마라.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 스택과 큐 처음에 들었을 땐 저게 뭐야.. 생소한데 라고 생각했는게 사용하는 곳을 보니 우리와도 너무 가까운곳에서 사용되고 있었다.
- 나는 더티코딩을 했었구나.. 당장 클린한 코드를 위해 습관을 들여야겠다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
'노마드 개발 북클럽(aka. 노개북) > IT 5분 잡학사전' 카테고리의 다른 글
[IT 5분 잡학사전_노개북] Final Mission(2023.01.26) (1) | 2023.01.27 |
---|---|
[IT 5분 잡학사전_노개북] 마당04_코딩별 안내서 - 컴퓨터 공학 편(4)(2023.01.24) (0) | 2023.01.24 |
[IT 5분 잡학사전_노개북] 마당03_코딩별 안내서 - 컴퓨터 공학 편(1)(2023.01.19) (1) | 2023.01.19 |
[IT 5분 잡학사전_노개북] 마당02_코딩별 안내서 - 웹 기술 편(2023.01.18) (0) | 2023.01.19 |
[IT 5분 잡학사전_노개북] 마당02_코딩별 안내서 - 웹 기술 편(2023.01.17) (0) | 2023.01.18 |