[노마드북클럽/IT 5분 잡학사전] #09_TIL

2023. 1. 21. 11:14STUDY/BOOK

728x90
반응형

#DAY9  : 에피소드 26 ~ 29

TIL (Today I Learned) 날짜

: 2022.01.21(토)

 

오늘 읽은 범위 :

✔️ 에피소드 26~29

 

오늘 TIL 3줄 요악

  • 정렬 알고리즘의 종류 파악하기
  • 스택, 큐, 해시테이블의 개념
  • 클린코드가 중요한 이유

 책에서 기억하고 싶은 내용을 써보세요.

 

 

26. [정렬 알고리즘이 뭐죠?]

✔️  버블 정렬

버블 정렬의 시간 복잡도는 O(N^2)이다. 

출처 - 위키백과

 

✔️  선택 정렬

하나를 콕 집어 가며 정렬하는 선택 정렬은 가장 작은 데이터 또는 가장 큰 데이터의 위치를 따로 기억하는 방식으로 작업을 진행한다.

선택 정렬의 시간 복잡도는 O(N^2)이다. 

하지만 버블 정렬보다는 효율적이다. 자리를 바꾸는 연산은 사이클당 1번씩만 하기 때문!

출처 - 위키백과

 

✔️  삽입 정렬

삽입 정렬은 앞에 있는 데이터를 보면서 배치하는 특징이 있다.

삽입 정렬은 선택 정렬, 버블 정렬보다 빠르다. 시간 복잡도는 O(N^2)이다. 

출처 - 위키 백과

✔️ 시간 복잡도는 같은데 왜 속도 차이가 날까?

시간 복잡도가 같다고 한 것은 시간 복잡도를 단순히 측정했을 때 그렇다는 뜻이다. 알고리즘은 초기 데이터 상태에 따라 처리 속도가 달라지는 특징을 가지고 있다. 그래서 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘은 있을 수 있다는 것이다.

 

 

27. [스택, 큐가 뭐죠?]

✔️ 스택

배열이 수직으로 쌓여 있다고 생각하고 맨 위를 정하는 것이다. 값을 추가하거나 삭제할 때 맨 위라고 정해 놓은 부분에서만 그 작업을 해야 한다. 데이터를 중간에서 빼거나 할 수 없음!

LIFO(last in, first out) -> "마지막에 들어간 녀석이 처음으로 나온다."

출처 - 위키 백과

 

✔️ 큐

FIFO(first in, first out) -> 위로 데이터를 쌓고, 아래에서부터 데이터를 뺀다.

출처 - 위키 백과

 

✔️ 스택, 큐는 대체 언제 사용할까?

ex)

1) 웹 브라우저의 뒤로 가기 버튼은 스택이다.

(2) 되돌리기 단축키도 스택이다. (ctrl + z)

(3) 쇼핑몰 주문 처리 시스템은 큐다.

 

 

28. [해시 테이블이 뭐죠?]

해시 테이블은 키와 값을 짝지어 모은 것인데 데이터를 더 쉽게 정리할 수 있게 해준다.

menu = [
	
    {name: "아메리카노", price: 10},
    {name: "라떼", price: 12},
    {name: "카모마일차", price: 15},
    {name: "케이크", price: 45},
    
];

이 상태에서 라떼의 가격이 얼마인지 알고 싶다면? 배열의 데이터를 처음부터 모두 확인해야 한다.(선형 검색)

이 방법은 시간이 오래 걸려서 해시 테이블이 등장했다.

menu = {
	
    커피: 10,
    라떼: 12,
    카모마일차: 15,
    케이크: 45,


};

라떼 가격을 알고 싶다면 모든 데이터를 다 찾는게 아니라 "라떼"를 검색하면 된다. 

 

✔️  배열 검색과 해시 테이블 검색의 시간 복잡도 차이는?

선형 검색 시간 복잡도: O(N)

해시 테이블: O(1) --> Big-O 표기법으로 표현할 수 있는 가장 빠른(상수) 시간!

 

 

29. [개발자 필수 소양, 클린 코드!]

✔️ 클린 코드를 위한 5가지 꿀팁

클린 코드란 설명이 필요 없는 코드이다.

 

1. 의미 있는 변수, 함수의 이름을 적절히 사용하라

2. 함수 이름은 가급적 동사로 지어라

3. 매개변수는 너무 많이 쓰지 마라

4. 불린값을 인자로 보내지 마라

5. 축약어를 쓰지 마라

 

 

책에서 기억하고 싶은 내용을 써보세요.

📌 알고리즘은 초기 데이터 상태에 따라 처리 속도가 달라지는 특징을 가지고 있다. 그래서 기계적으로 측정한 시간 복잡도는 같아도 평균적으로 빠른 알고리즘은 있을 수 있다는 것이다.

 

📌 스택: LIFO(last in, first out) -> 마지막에 들어간 녀석이 처음으로 나온다.
큐 :  FIFO(first in, first out) -> 위로 데이터를 쌓고, 아래에서부터 데이터를 뺀다.

 

📌 클린코드를 위한 5가지 꿀팁

 

 

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

🗣 시간복잡도가 같아도 평균적으로 빠른 알고리즘은 있을 수 있다는 것을 알게 되었다. 

 

🗣 스택과 큐의 차이를 개념적으로 알고 있었지만 예시를 보니 명확하게 이해가 되었다.

 

🗣 클린코드의 개념을 알게 되었고, 개발자가 꼭 챙겨야 하는 꿀팁을 알게 되었다.